„Mobilszoftverek - Ellenőrző kérdések kódjai” változatai közötti eltérés

A VIK Wikiből
Geko (vitalap | szerkesztései)
Új oldal, tartalma: „-------- |JavaME| -------- J1.1 Vázolja fel egy Java ME alkalmazás kódját, mely megjeleníti a "Hello Mobil Fejlesztők!" feliratot! import javax.microedition.mi…”
 
Szikszayl (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
 
(3 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
--------
 
|JavaME|
==JavaME==
--------
 


J1.1 Vázolja fel egy Java ME alkalmazás kódját, mely megjeleníti a "Hello Mobil Fejlesztők!" feliratot!
J1.1 Vázolja fel egy Java ME alkalmazás kódját, mely megjeleníti a "Hello Mobil Fejlesztők!" feliratot!


import javax.microedition.midlet.*;
        import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
        import javax.microedition.lcdui.*;
public class HelloMidlet extends MIDlet implements CommandListener {
        public class HelloMidlet extends MIDlet implements CommandListener {
private Form form;
        private Form form;
       
public void initialize() {
        public void initialize() {
form = new Form("hello");
        form = new Form("hello");
form.append("Hello Mobil Fejlesztők!");
        form.append("Hello Mobil Fejlesztők!");
       
Command cExit = new Command("Exit", Command.EXIT, 1);
        Command cExit = new Command("Exit", Command.EXIT, 1);
form.addCommand(cExit);
        form.addCommand(cExit);
form.setCommandListener(this);
        form.setCommandListener(this);
       
Display.getDisplay(this).setCurrent(form);
        Display.getDisplay(this).setCurrent(form);
}
        }
       
public void startApp() {
        public void startApp() {
initialize();
        initialize();
}
        }
public void pauseApp() { }
        public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
        public void destroyApp(boolean unconditional) { }
       
public void commandAction(Command c, Displayable d) {
        public void commandAction(Command c, Displayable d) {
if (c.getLabel() == "Exit") {
        if (c.getLabel() == "Exit") {
destroyApp(true);
        destroyApp(true);
notifyDestroyed();
        notifyDestroyed();
}
        }
}
        }
}
        }


J1.2 Készítsen egy Canvas osztályt, mely fekete háttéren egy piros négyzetet jelenít meg!
J1.2 Készítsen egy Canvas osztályt, mely fekete háttéren egy piros négyzetet jelenít meg!


public class MyCanvas extends Canvas {
        public class MyCanvas extends Canvas {
private MyMidlet midlet;
        private MyMidlet midlet;
public MyCanvas(MyMidlet aMidlet) {
        public MyCanvas(MyMidlet aMidlet) {
midlet = aMidlet;
        midlet = aMidlet;
}
        }
public void paint(Graphics g) {
        public void paint(Graphics g) {
g.setColor(0,0,0);
        g.setColor(0,0,0);
g.fillRect(0,0,getWidth(),getHeight());
        g.fillRect(0,0,getWidth(),getHeight());
g.setColor(255,0,0);
        g.setColor(255,0,0);
g.fillRect(10,10,50,50);
        g.fillRect(10,10,50,50);
}
        }
public void keyPressed(int keycode) {
        public void keyPressed(int keycode) {
midlet.exitMIDlet();
        midlet.exitMIDlet();
}
        }
}
        }


J1.3 Vázolja fel egy Java ME alkalmazás kódját, mely másodpercenként egy # jelet fűz a kijelző tartalmához!
J1.3 Vázolja fel egy Java ME alkalmazás kódját, mely másodpercenként egy # jelet fűz a kijelző tartalmához!


import javax.microedition.midlet.*;
        import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
        import javax.microedition.lcdui.*;
public class TimerMidlet extends MIDlet {
        public class TimerMidlet extends MIDlet {
private Form form;
        private Form form;
private class MyTimerTask extends TimerTask {
        private class MyTimerTask extends TimerTask {
public void run() { form.append("#"); }
        public void run() { form.append("#"); }
}
        }
       
public void startApp() {
        public void startApp() {
form = new Form("Append");
        form = new Form("Append");
Display.getDisplay(this).setCurrent(form);
        Display.getDisplay(this).setCurrent(form);
Timer mainTimer = new Timer();
        Timer mainTimer = new Timer();
mainTimer.schedule(new MyTimerTask(), 0, 1000);
        mainTimer.schedule(new MyTimerTask(), 0, 1000);
}
        }
public void pauseApp() { }
        public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
        public void destroyApp(boolean unconditional) { }
}
        }


J3.1. Készítsen egy szál osztályt, amely kilistázza a tennivalókat!
J3.1. Készítsen egy szál osztályt, amely kilistázza a tennivalókat!


private class MyToDoLister extends Thread {
        private class MyToDoLister extends Thread {
public void run() {
        public void run() {
String v = System.getProperty("microedition.pim.version");
        String v = System.getProperty("microedition.pim.version");
if (v != null) {
        if (v != null) {
PIM singleton = PIM.getInstance();
        PIM singleton = PIM.getInstance();
ToDoList todolist = null;
        ToDoList todolist = null;
try {
        try {
todolist = (ToDoList)singleton.openPIMList(PIM.TODO_LIST, PIM.READ_ONLY);
        todolist = (ToDoList)singleton.openPIMList(PIM.TODO_LIST, PIM.READ_ONLY);
Enumeration todosEnum = todolist.items();
        Enumeration todosEnum = todolist.items();
while (todosEnum.hasMoreElements()) {
        while (todosEnum.hasMoreElements()) {
ToDo t = (ToDo)todosEnum.nextElement();
        ToDo t = (ToDo)todosEnum.nextElement();
System.out.println(t.getString(ToDo.SUMMARY, 0));
        System.out.println(t.getString(ToDo.SUMMARY, 0));
}
        }
}
        }
catch (Exception e){
        catch (Exception e){
e.printStackTrace();
        e.printStackTrace();
}
        }
}
        }
}
        }
}
        }
       
J3.2 Készítsen egy függvényt, mely az alkalmazás beállításait (egy string és egy int) elmenti perzisztens módon!
J3.2 Készítsen egy függvényt, mely az alkalmazás beállításait (egy string és egy int) elmenti perzisztens módon!


public void saveSettings(String aString, int aInt) {
        public void saveSettings(String aString, int aInt) {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream(bout);
        DataOutputStream dout = new DataOutputStream(bout);
RecordStore rs = null;
        RecordStore rs = null;
try {
        try {
dout.writeUTF(aString);
        dout.writeUTF(aString);
dout.writeInt(aInt);
        dout.writeInt(aInt);
dout.flush();
        dout.flush();
byte[] data = bout.toByteArray();
        byte[] data = bout.toByteArray();
rs = RecordStore.openRecordStore("mydatabase", true);
        rs = RecordStore.openRecordStore("mydatabase", true);
try {
        try {
rs.setRecord(1, data, 0, data.length);
        rs.setRecord(1, data, 0, data.length);
}
        }
catch (RecordStoreException ex) {
        catch (RecordStoreException ex) {
rs.addRecord(data, 0, data.length);
        rs.addRecord(data, 0, data.length);
}
        }
}
        }
catch (Exception ex) {
        catch (Exception ex) {
ex.printStackTrace();
        ex.printStackTrace();
}
        }
finally {
        finally {
try {
        try {
dout.close();
        dout.close();
bout.close();
        bout.close();
rs.closeRecordStore();
        rs.closeRecordStore();
}
        }
catch (Exception ex) {
        catch (Exception ex) {
ex.printStackTrace();
        ex.printStackTrace();
}
        }
}
        }
}
        }
       
J3.3 Készítsen egy szál osztályt, mely a 192.168.0.100:10000-es címre socket-en keresztül elküldi a "hello world" stringet!
J3.3 Készítsen egy szál osztályt, mely a 192.168.0.100:10000-es címre socket-en keresztül elküldi a "hello world" stringet!


public class SocketWriter extends Thread {
        public class SocketWriter extends Thread {
public void run() {
        public void run() {
SocketConnection sconn = null;
        SocketConnection sconn = null;
OutputStream os = null;
        OutputStream os = null;
try {
        try {
sconn = (SocketConnection)Connector.open("socket://192.168.0.100:10000");
        sconn = (SocketConnection)Connector.open("socket://192.168.0.100:10000");
os = sconn.openOutputStream();
        os = sconn.openOutputStream();
os.write("hello world");
        os.write("hello world");
os.close();
        os.close();
sconn.close();
        sconn.close();
}
        }
catch (Exception e) { }
        catch (Exception e) { }
}
        }
}
        }
       
---------------
 
|Symbian - C++|
==Symbian - C++==
---------------
 


S2.1 Hogyan működik a TRAP és User::Leave? Hogyan kell ezeket használni? (példakód)
S2.1 Hogyan működik a TRAP és User::Leave? Hogyan kell ezeket használni? (példakód)


void Fuggveny() { // nincs L a végén, mivel elkapja az összes leave forrást
        void Fuggveny() { // nincs L a végén, mivel elkapja az összes leave forrást
int hiba;
        int hiba;
TRAP(hiba, ProbaL()); //leave-elő függvény hívása
        TRAP(hiba, ProbaL()); //leave-elő függvény hívása
if (hiba != KErrNone) {
        if (hiba != KErrNone) {
// ha ProbaL() leave-el, akkor ide adódik a vezérlés, és lekezelhetjük a hibát.
        // ha ProbaL() leave-el, akkor ide adódik a vezérlés, és lekezelhetjük a hibát.
}
        }
}
        }
       
S2.2 Mi az a kétfázisú konstrukció? (példakód)
S2.2 Mi az a kétfázisú konstrukció? (példakód)


class CKulsoOsztaly : public CBase {
        class CKulsoOsztaly : public CBase {
public:
        public:
~CKulsoOsztaly(); //destruktor
        ~CKulsoOsztaly(); //destruktor
static CKulsoOsztaly* NewL(); //példányosító metódusok
        static CKulsoOsztaly* NewL(); //példányosító metódusok
static CKulsoOsztaly* NewLC();
        static CKulsoOsztaly* NewLC();
protected:
        protected:
//védett konstruktor, közvetlenül nem példányosítható az osztály
        //védett konstruktor, közvetlenül nem példányosítható az osztály
CKulsoOsztaly(); //első fázis, nem leavelhet
        CKulsoOsztaly(); //első fázis, nem leavelhet
void ConstructL(); //második fázis, leavelhet
        void ConstructL(); //második fázis, leavelhet
};
        };
void CKulsoOsztaly::ConstructL() {
        void CKulsoOsztaly::ConstructL() {
iTagValtozo = new (ELeave) CBelsoOsztaly();
        iTagValtozo = new (ELeave) CBelsoOsztaly();
}
        }
CKulsoOsztaly* CKulsoOsztaly::NewLC() { //konstruktor, egyszerű inicializálások
        CKulsoOsztaly* CKulsoOsztaly::NewLC() { //konstruktor, egyszerű inicializálások
CKulsoOsztaly* self = new (ELeave) CKulsoOsztaly();
        CKulsoOsztaly* self = new (ELeave) CKulsoOsztaly();
CleanupStack::PushL(self); //félkész obj felrakása a CS-re
        CleanupStack::PushL(self); //félkész obj felrakása a CS-re
self->ConstructL(); //veszélyes inicializálások, de ekkorra az objektum már a CleanupStack-en van
        self->ConstructL(); //veszélyes inicializálások, de ekkorra az objektum már a CleanupStack-en van
return self;
        return self;
}
        }
CKulsoOsztaly* CKulsoOsztaly::NewL() {
        CKulsoOsztaly* CKulsoOsztaly::NewL() {
CKulsoOsztaly * self = NewLC();
        CKulsoOsztaly * self = NewLC();
CleanupStack::Pop();
        CleanupStack::Pop();
return self;
        return self;
}
        }
       
--------------
 
|Symbian - Qt|
==Symbian - Qt==
--------------
 


S3.1 Hogy működik a signals and slots? (példakód)
S3.1 Hogy működik a signals and slots? (példakód)


#include <QObject>
        #include <QObject>
class Counter : public QObject {
        class Counter : public QObject {
Q_OBJECT
        Q_OBJECT
public:
        public:
Counter() { val = 0; }
        Counter() { val = 0; }
int value() const { return val; }
        int value() const { return val; }
public slots:
        public slots:
void setValue(int v) {
        void setValue(int v) {
if (v != val) {
        if (v != val) {
val = v;
        val = v;
emit valueChanged(v);
        emit valueChanged(v);
}
        }
}
        }
signals:
        signals:
void valueChanged(int newValue);
        void valueChanged(int newValue);
private:
        private:
int val;
        int val;
};
        };
...
        ...
Counter c1, c2;
        Counter c1, c2;
//összekapcsolás
        //összekapcsolás
QObject::connect(&c1, SIGNAL(valueChanged(int)), &c2, SLOT(setValue(int)))
        QObject::connect(&c1, SIGNAL(valueChanged(int)), &c2, SLOT(setValue(int)))
 
 
[[Kategória:Mérnök informatikus MSc]]

A lap jelenlegi, 2014. március 13., 13:52-kori változata

JavaME

J1.1 Vázolja fel egy Java ME alkalmazás kódját, mely megjeleníti a "Hello Mobil Fejlesztők!" feliratot!

       import javax.microedition.midlet.*;
       import javax.microedition.lcdui.*;
       public class HelloMidlet extends MIDlet implements CommandListener {
       	private Form form;
       	
       	public void initialize() {
       		form = new Form("hello");
       		form.append("Hello Mobil Fejlesztők!");
       		
       		Command cExit = new Command("Exit", Command.EXIT, 1);
       		form.addCommand(cExit);
       		form.setCommandListener(this);
       		
       		Display.getDisplay(this).setCurrent(form);
       	}
       	
       	public void startApp() {
       		initialize();
       	}
       	public void pauseApp() { }
       	public void destroyApp(boolean unconditional) {	}
       	
       	public void commandAction(Command c, Displayable d) {
       		if (c.getLabel() == "Exit") {
       			destroyApp(true);
       			notifyDestroyed();
       		}
       	}
       }

J1.2 Készítsen egy Canvas osztályt, mely fekete háttéren egy piros négyzetet jelenít meg!

       public class MyCanvas extends Canvas {
       	private MyMidlet midlet;
       	public MyCanvas(MyMidlet aMidlet) {
       		midlet = aMidlet;
       	}
       	public void paint(Graphics g) {
       		g.setColor(0,0,0);
       		g.fillRect(0,0,getWidth(),getHeight());
       		g.setColor(255,0,0);
       		g.fillRect(10,10,50,50);
       	}		
       	public void keyPressed(int keycode) {
       		midlet.exitMIDlet();
       	}
       }

J1.3 Vázolja fel egy Java ME alkalmazás kódját, mely másodpercenként egy # jelet fűz a kijelző tartalmához!

       import javax.microedition.midlet.*;
       import javax.microedition.lcdui.*;
       public class TimerMidlet extends MIDlet	{
       	private Form form;
       	private class MyTimerTask extends TimerTask	{
       		public void run() {	form.append("#"); }
       	}
       		
       	public void startApp() {
       		form = new Form("Append");
       		Display.getDisplay(this).setCurrent(form);
       		Timer mainTimer = new Timer();
       		mainTimer.schedule(new MyTimerTask(), 0, 1000);
       	}
       	public void pauseApp() { }
       	public void destroyApp(boolean unconditional) {	}
       }

J3.1. Készítsen egy szál osztályt, amely kilistázza a tennivalókat!

       private class MyToDoLister extends Thread {
       	public void run() {
       		String v = System.getProperty("microedition.pim.version");
       		if (v != null) {
       			PIM singleton = PIM.getInstance();
       			ToDoList todolist = null;
       			try {
       				todolist = (ToDoList)singleton.openPIMList(PIM.TODO_LIST, PIM.READ_ONLY);
       				Enumeration todosEnum = todolist.items();
       				while (todosEnum.hasMoreElements()) {
       					ToDo t = (ToDo)todosEnum.nextElement();
       					System.out.println(t.getString(ToDo.SUMMARY, 0));
       				}
       			}
       			catch (Exception e){
       				e.printStackTrace();
       			}
       		}
       	}
       }
       

J3.2 Készítsen egy függvényt, mely az alkalmazás beállításait (egy string és egy int) elmenti perzisztens módon!

       public void saveSettings(String aString, int aInt) {
       	ByteArrayOutputStream bout = new ByteArrayOutputStream();
       	DataOutputStream dout = new DataOutputStream(bout);
       	RecordStore rs = null;
       	try {
       		dout.writeUTF(aString);
       		dout.writeInt(aInt);
       		dout.flush();
       		byte[] data = bout.toByteArray();
       		rs = RecordStore.openRecordStore("mydatabase", true);
       		try {
       			rs.setRecord(1, data, 0, data.length);
       		}
       		catch (RecordStoreException ex) {
       			rs.addRecord(data, 0, data.length);
       		}
       	}
       	catch (Exception ex) {
       		ex.printStackTrace();
       	}
       	finally {
       		try {
       			dout.close();
       			bout.close();
       			rs.closeRecordStore();
       		}
       		catch (Exception ex) {
       			ex.printStackTrace();
       		}
       	}
       }
       

J3.3 Készítsen egy szál osztályt, mely a 192.168.0.100:10000-es címre socket-en keresztül elküldi a "hello world" stringet!

       public class SocketWriter extends Thread {
       	public void run() {
       		SocketConnection sconn = null;
       		OutputStream os = null;
       		try {
       			sconn = (SocketConnection)Connector.open("socket://192.168.0.100:10000");
       			os = sconn.openOutputStream();
       			os.write("hello world");
       			os.close();
       			sconn.close();
       		}
       		catch (Exception e) { }
       	}
       }
       

Symbian - C++

S2.1 Hogyan működik a TRAP és User::Leave? Hogyan kell ezeket használni? (példakód)

       void Fuggveny() { // nincs L a végén, mivel elkapja az összes leave forrást
       	int hiba;
       	TRAP(hiba, ProbaL()); //leave-elő függvény hívása
       	if (hiba != KErrNone) {
       		// ha ProbaL() leave-el, akkor ide adódik a vezérlés, és lekezelhetjük a hibát.
       	}
       }
       

S2.2 Mi az a kétfázisú konstrukció? (példakód)

       class CKulsoOsztaly : public CBase {
       public:
       	~CKulsoOsztaly(); //destruktor
       	static CKulsoOsztaly* NewL(); //példányosító metódusok
       	static CKulsoOsztaly* NewLC();
       protected:
       	//védett konstruktor, közvetlenül nem példányosítható az osztály
       	CKulsoOsztaly(); //első fázis, nem leavelhet
       	void ConstructL(); //második fázis, leavelhet
       };
       void CKulsoOsztaly::ConstructL() {
       	iTagValtozo = new (ELeave) CBelsoOsztaly();
       }
       CKulsoOsztaly* CKulsoOsztaly::NewLC() { //konstruktor, egyszerű inicializálások	
       	CKulsoOsztaly* self = new (ELeave) CKulsoOsztaly();
       	CleanupStack::PushL(self); //félkész obj felrakása a CS-re
       	self->ConstructL(); //veszélyes inicializálások, de ekkorra az objektum már a CleanupStack-en van
       	return self;
       }
       CKulsoOsztaly* CKulsoOsztaly::NewL() {
       	CKulsoOsztaly * self = NewLC();
       	CleanupStack::Pop();
       	return self;
       }
       

Symbian - Qt

S3.1 Hogy működik a signals and slots? (példakód)

       #include <QObject>
       class Counter : public QObject {
       	Q_OBJECT
       	public:
       		Counter() { val = 0; }
       		int value() const { return val; }
       	public slots:
       		void setValue(int v) {
       			if (v != val) {
       				val = v;
       				emit valueChanged(v);
       			}
       		}
       	signals:
       		void valueChanged(int newValue);
       	private:
       		int val;
       };
       ...
       Counter c1, c2;
       //összekapcsolás
       QObject::connect(&c1, SIGNAL(valueChanged(int)), &c2, SLOT(setValue(int)))