„Mobilszoftverek - Ellenőrző kérdések kódjai” változatai közötti eltérés
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…”) |
Geko (vitalap | szerkesztései) |
||
5. sor: | 5. sor: | ||
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.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! | 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! | 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! | 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! | 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! | 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++| | |Symbian - C++| | ||
153. sor: | 153. sor: | ||
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 | |
− | + | 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) | 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| | |Symbian - Qt| | ||
194. sor: | 194. sor: | ||
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> | |
− | + | 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))) |
A lap 2013. június 3., 23:57-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)))