„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…” |
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== | |||
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++== | |||
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== | |||
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))) | |||
[[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)))