„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) Nincs szerkesztési összefoglaló |
||
| 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 4., 00: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)))
