Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália ELTE PSZT szeptember

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália ELTE PSZT szeptember"

Átírás

1 Mobil alkalmazások fejlesztése Készítette: Szabóné Nacsa Rozália ELTE PSZT szeptember

2 Irodalom Charaf Hassan, Csúcs Gergely, Forstner Bertalan: Symbian alapú szoftverfejlesztés Richard Harrison: Pogrammig with Extended Functionality and Advanced Features Jo Stichbury: Effective C++ Programming for Smartphones Jo Stichbury, Mark Jacoms:The Acreditet Symbian Developer Primer (Fundamentals if Symbian OS) 2

3 Segédanyagok SDK online dokumentáció: C:\S60\devices\S60_3rd_FP2_SDK_v1.1\docs\eclipse.exe 3

4 Előkészületek 1. Perl 5.6.x (Set the pathvariable!) 5.8 /5.10 nem jó! MSWin32-x86.msi 2. SDK(s)(S60 3rd Ed. MR + újabb) 60_Platform_SDKs/ 3. Carbide.c Developer Edition (vagy újabb) html Eszközök telepítése a felsorolás sorrendjében történjen! Az eszközöket ugyanarra a meghajtóra kell telepíteni, ahol az SDK van. (javasolt: C:\)! Ne használjunk hálózati meghajtót! Fájl nevekben ne használjunk helyközt! 4

5 A kezdetek SIBO Psion Computers (1980) EPOC - irodai kisszámítógép ( ) Symbian OS (alapítva 1998 : Nokia, Motorola, Psion, Ericsson, 2002: Sony-Ericssson, Siemens) Mérföldkő: 2000-ben megjelent 6.0-ás verzió Symbian Symbian OS S60 C++ 5

6 Symbian OS felépítése Felhasználói interfész szinkronizáció UI alkalmazás keretrendszer UI eszközkészlet MIDP CLDC Alkalmazás szintű szolgáltatások PIM Böngészés Üzenetkezelés Adatszinkron JVM Java Operációs rendszer szolgáltatásai Általános szolgáltatások Kommunikációs szolgáltatások Grafikai szolgáltatások PC-s kapcsolat szolgáltatásai Alapszolgáltatások Alacsonyszintű szolgáltatások Fájlszerver Kernel és hardware integráció Kernel szolgáltatások Eszközmeghajtók 6

7 Kliens-szerver keretrendszer fájlszerver ablakkezelő szerver kommunikácó kezelés adatbázis-kezelés határidőnapló A CServer osztályból származnak. 7

8 S60 és UIQ Application suites UI implementation UI framework S 60 UIQ MOAP Symbian OS HW adaptation Hardware Symbian Symbian OS S60 C++ 8

9 S60 áttekintése 9

10 Carbide.c++ 10

11 Carbide.c++ Szoftver frissítés 11

12 Carbide.c++ Szoftver frissítés 12

13 Új projekt létrehozása 13

14 Alkalmazások azonosítása 14

15 Carbide.++, GUI projekt 15

16 Projekt fordítása emulátorra 16

17 Futtatási mód kiválasztása 17

18 Alkalmazás elindítása az emulátoron Options/Open Options/Open 18

19 A fordítás és szerkesztés folyamata.bmp <.h>.h.rsg.hrh.rh.rls Bmp konverter.cpp.rss.bmp.mbm.rss C++ fordító Erőforrás fordító Bmp konverter Aif fordító.obj.lib.rsc.pkg.mbm.aif linker.exe;.dll Sis készítő.sis 19

20 Fájlkiterjesztések bld.inf.mmp.h,.cpp.pkg.sis.aif.lib.dll.exe.mbm.mbg.rss.rh.hrh.rsg.lrs Projektfájlokat felsoroló állomány Projekt leíró fájl Hagyományos C++ fejlés- és forrásfájlok A telepítéshez szükséges leírás. A makesis bemenete Symbian telepítő fájl. A makesis kimenete Applikációs leíró fájl Az összeszerkesztés során a könyvtári rutinokat tartalmazó fájl Futás közben betölthető programkönyvtár Futtathaó fájl Több képet tartalmazó fájl Az mbm fájlokban található képek programból történő használatához szüksége konstansokat tartalmazó fejlécfájl Erőforrás leíró fájl Erőforrásokban használt struktúrákat definiáló fejlécfájl Erőforrásokkal kapcsoltaos konstanso Erőforrások azonosítói A támogatott nyelv(ek)-en megadott stringek listája 20

21 21

22 Symbian C++ sajátosságok Nincs kivétel. Helyette: TRAP és User::Leave Nincs RTTI (dinamikus castolás nem megengedett) Kódolási minták a memóriaszivárgás kiszűrésére: kétfázisú konstrukció, CleanUpStack Saját elnevezési konvenciók: nem a változó típusa, hanem szerepe szerint történik az elnevezés (T,C,R,M) (( dekorált osztálynevek) memóriakezelés segítése függvénynevekkel: prefixek, postfixek ( dekorált eljárásnevek) Nincs STL, helyette saját generikus adatszerkezeteket használ String helyett deszkriptorok Többszálúság kezelése: ActiveObject, Thread Template-ek használata: ThinTemplate 22

23 Osztálytípusok T: egyszerű típus; nincs destruktora; csak T-ből, vagy M-ből öröklődhet; értékként átadható; stack-en tárolható C: csak a heapen foglalható; van destruktora; pontosan egy C és tetszőleges M osztályból származhat; nem adható át értékként M: interfész; csak virtuális metódusok; nincsenek tagváltozók; nem példányosítható R: erőforrás, melyet meg kell nyitni és be kell zárni 23

24 Osztálytípusok - példa PeekabooAppUi.h class MPeekabooGameControl public: virtual TBool HitSquareL(TInt aindex)=0; virtual TInt SquareStatus(TInt aindex)=0; ; class CPeekabooAppUi : public CAknAppUi, public MPeekabooGameControl... private: // From MPeekabooGameControl TBool HitSquareL(TInt aindex); TInt SquareStatus(TInt aindex); private: CPeekabooAppView* iappview; RArray<TInt> itilestate; TInt igamestatus; TBool ifirstturn; TBool ishow; ; TInt itilesperrow; TInt itilespercol; 24

25 Leave -elő függvények A leave -elő függvények olyan eljárások, amelyek végrehajtása nem garantált. (erőforrás hiány, kevés memória, nincs kapcsolat, nincs hely a diszken, ) 25

26 new (ELeave) operátor LOCAL_C void MainL() CMyClass* myptr = new CMyClass; if(myptr) myptr->foo(); //Can safely access data & functions delete myptr; LOCAL_C void MainL() CMyClass* myptr = new (ELeave) CMyClass; myptr->foo();... Hiba esetén abbahagyja a végrehajtást. delete myptr; 26

27 Leave -elő függvények - példa CPeekabooTile * CPeekabooAppView::CreateTileL() CPeekabooTile * tile = new(eleave) CPeekabooTile; CleanupStack::PushL(tile); tile->constructl(window()); CleanupStack::Pop(); // tile tile->setownerandobserver(this); return tile; Mikor leave-elhet egy függvény? Ha közvetlenül meghívja a User::Leave() függvényt Heapen foglal helyet new (ELeave) operátorral Más leave-elő függvényt hív. void CPeekabooAppView::ConstructL(const TRect& arect, MPeekabooGameControl* agamecontrol)... for (TInt i = 0; i < CountComponentControls(); i++) User::LeaveIfError(iTiles.Append(CreateTileL()));... void CPeekabooAppUi::HandleCommandL(TInt acommand)... case EPeekabooWelcome: HBufC* textresource = StringLoader::LoadLC(R_WELCOME_TEXT); CAknInformationNote* informationnote; informationnote = new (ELeave) CAknInformationNote; informationnote->executeld(*textresource); CleanupStack::PopAndDestroy(textResource); break;... 27

28 Hibakezelés csapdázással, leaveléssel case ECleanupCmdUse3: CX* x=new(eleave) CX; TRAPD (error, x->usel()); if(error) delete x; User::Leave(error); delete x; Több függvényhívás esetén minden egyes függvényhívást külön-külön csapdázni kell. case ECleanupCmdUse3: CX* x=new(eleave) CX; CleanupStack::PushL(x); x->usel(); x->usel(); x->usel(); CleanupStack::PopAndDestroy(x); A CleanupStack segítségével egy csokorba gyűjthetjük a leavelő függvényhívásokat. 28

29 Csapdázás származtatott osztályban /* a felüldefiniált Draw() függvény */ virtual void Draw(constTRect &arect) const TRAPD(error, SajatDrawL(aRect)) // SajátDrawL hívás if(error!kerrnone) // volt User::Leave() hívás? //hiba jelzése, kezelése 29

30 Kivételkezelés C++ Ha kivételkezelés történik A program stack visszafejtésre kerül a catch szintjéig Az objektumok destruktorai meghívódnak Symbian Nincs C++ kivétel Nincs veremvisszafejtés Destruktorokat nem hívja meg Egész számot lehet eldobni és elkapni 30

31 Leavelő mechanizmus A leave -elésnél a vezérlés átkerül a legközelebbi TRAP makróval megjelölt helyre. (setjump(), longjump()) A vezérlés átadásakor a verem egyszerűen csak kiürül. A veremből kiszedett objektumokra nem hajtódik végre a destruktor. Ha csak ez történne, akkor maradnának árván hagyott területek a heapen. (automatikus változók) Kell egy kiegészítő mechanizmus, amely felszabadítja az árván hagyott tárhelyet. CleanUp Stack 31

32 CleanupStack case ECleanupCmdUse3: CX* x=new(eleave) CX; x->usel(); delete x; Az x automatikus változó a heap-re mutat. Ha UseL() leave-el, akkor a delete nem hajtódik végre, a CX által lefoglalt terület árván marad. case ECleanupCmdUse3: CX* x=new(eleave) CX; CleanupStack::PushL(x); x->usel(); CleanupStack::PopAndDestroy(x); A CX helyfoglalása után a rá mutató pointert elhelyezzük a Cleannup Stack-en. Ha UseL() nem leave-el, akkor MI szedjük le a címet a stackről. Ha UseL() leave-el, akkor a Laeve kezelő eljárás. 32

33 Összetett ojektum példányosítása (!!) class CY : public CBase public: CY(); ~CY(); public: CX* ix; ; CY::CY() //???? ix=new(eleave) CX; class CX : public CBase public: void UseL(); public: TInt iint; ; void CX::UseL() TInt* pi=new(eleave) TInt; delete pi; CY::~CY() delete ix; Probléma: A CY példányosításakor a CY konstruktora leave-el! CY* y=new(eleave) CY; CleanupStack::PushL(y); y->ix->usel(); CleanupStack::PopAndDestroy(); // y 33

34 Kétfázisú konstrukció A konstruktort két részre bontjuk: 1. rész: Biztonságos, nem leave-elő a példányra mutató pointer biztosan felkerül a CleanupStack-re 2. rész: A veszélyesebb leave-elő rész. De ekkor már jó helyen van a pointer. A kétfázisú konstrukció biztosítja a heapen létrehozott objektumok biztonságos inicializálását akkor is, ha az inicializáló eljárás nem biztonságos. 34

35 Kétfázisú konstrukció megvalósítása class CZ : public CBase public: static CZ* NewL(); static CZ* NewLC(); void ConstructL(); ~CZ(); public: CX* ix; ; A két fázist (a biztonság kedvéért ) a NewL, NewLC függvényekbe becsomagolják. void CZ::ConstructL() ix=new(eleave) CX; CZ::~CZ() delete ix; CZ* CZ::NewL() CZ* self=new(eleave) CZ; CleanupStack::PushL(self); self->constructl(); CleanupStack::Pop(); return self; CZ* CZ::NewLC() CZ* self=new(eleave) CZ; CleanupStack::PushL(self); self->constructl(); return self; 35

36 Kétfázisú konstrukció - példa CPeekabooAppView* CPeekabooAppView::NewL(const TRect& arect, MPeekabooGameControl* agamecontrol, TInt atilesperrow, TInt atilespercol) CPeekabooAppView* self = CPeekabooAppView::NewLC(aRect, agamecontrol, atilesperrow, atilespercol); CleanupStack::Pop(self); return self; CPeekabooAppView* CPeekabooAppView::NewLC(const TRect& arect, MPeekabooGameControl* agamecontrol, TInt atilesperrow, TInt atilespercol) CPeekabooAppView* self = new (ELeave) CPeekabooAppView(aTilesPerRow, atilespercol); CleanupStack::PushL(self); self->constructl(arect,agamecontrol); return self; void CPeekabooAppView::ConstructL(const TRect& arect, MPeekabooGameControl* agamecontrol) CreateWindowL();... SetRect(aRect); ActivateL(); 36

37 Deszkriptorok Véd a túlcsordulás/túlindexelés ellen ( C) Önkifejező (hossz, típus) Nincs NULL terminátor (a bináris és sztring kezelés egységesítése) Egyszerű paraméterátadás 37

38 Deszkriptorok TDesC ilength itype Length() Ptr() TPtrC iptr BufBase TDes imaxlength MaxLength() TBufC<n> ibuf HBufC ibuf TPtr iptr TBufBase TBuf<n> ibuf 38

39 Pufferes deszkriptorok TBufC ilength TDesC Hello World! TBufC heap, stack, ROM TBuf ilength imaxlength Hello World! TDesC TDes TBuf _LIT(KTxtHello, Hello World! ); A méret fordítási időben ismert! TBufC<16> buffer (KTextHello);... 39

40 Pointeres deszkriptorok TPtrC ilength TDesC iptr TPtrC heap, stack, ROM Hello World! TPtr ilength imaxlength iptr TDesC TDes TPtrC void foo(tuint16* abuf, TInt alength) TPtrC myptr(abuf, alength);... _LIT(KTxtHello, Hello World! ); TBufC<16> buffer (KTextHello); TPtrC mybuffer(buffer);... 40

41 Heap bázisú deszkriptor ( dinamikus deszkriptor) HBufC ilength TDesC Heap Hello World! TBufC A méret fordítási időben nem ismert Túl nagy méret _LIT(KTxtHello, Hello World! HBufC* buffer = HBufC::newL(256); *buffer = KTxtHello;... _LIT(KTxtHello, Hello World! ); _LIT(KTxtFriends, Friends ); HBufC* buffer = HBufC::newL(256); *buffer = KTxtHello; TPtr temp buffer->des(); temp.replace(6,6, KTxtFriends);... 41

42 RBuf Hello World! RBuf ilength TDesC imaxlength TDes unió típus TUint16* ieptrtype HBufC16* iebufcptrtype RBuf Hello World! Heap 42

43 Deszkriptorok - példa void CPeekabooAppUi::HandleCommandL(TInt acommand) switch (acommand) case EEikCmdExit: case EAknSoftkeyExit: Exit(); break; case EPeekabooWelcome: HBufC* textresource = StringLoader::LoadLC(R_WELCOME_TEXT); CAknInformationNote* informationnote; informationnote = new (ELeave) CAknInformationNote; informationnote->executeld(*textresource); CleanupStack::PopAndDestroy(textResource); break;... 43

44 Aszinkron szolgáltatások, ActiveObject Pre-emptive ütemezés: thread Kooperatív ütemezés: Active object Real-time ütemezés: pl. hang puffer töltése Mobil alkalmazások: sok aszinkron esemény Cél: hatékony, kis kódú, kevés memóriaigényű megoldás Active objet framework: Active object + Active Scheduler Active object: 1. istatus 2. SetActive() 3. Runl() 4. DoCancel() 5. RunError() Eseményvezérelt alkalmazások készítése - felhasználói felület kezelése -szerver szolgáltatások igénylése Hosszan futó programok futtatása ActiveScheduler: prioritás OfferKeyEventL() Példa: people.inf.elte.hu/nacsa/symbian/activehello 44

45 ActiveObject - példa Példa: people.inf.elte.hu/nacsa/symbian/activehello 45

46 ActiveObject - példa class CFlashingHello : public CActive... // Request void Start(TTimeIntervalMicroSeconds32 ahalfperiod);... // from CActive void RunL(); void DoCancel(); // Utility void ShowText(TBool eshowtext); private: // Member variables RTimer itimer; TTimeIntervalMicroSeconds32 ihalfperiod; // Pointers elsewhere CActiveHelloContainer* iappview; ; void CFlashingHello::RunL() // Change visibility of app view text ShowText(!iAppView->iShowText); // Re-issue request itimer.after(istatus, ihalfperiod); SetActive(); void CFlashingHello::DoCancel() // Ensure text is showing ShowText(ETrue); // Cancel timer itimer.cancel(); void CFlashingHello::ShowText(TBool ashowtext) iappview->ishowtext=ashowtext; iappview->drawnow(); Példa: people.inf.elte.hu/nacsa/symbian/activehello 46

47

48 GUI alkalmazások felépítése

49 GUI alkalmazások felépítése (MVC) Application creates Document creates, manages creates manages AppView (V) renders creates, manages AppUi (C) manages Model (M) 49

50 Az alkalmazás indulása E32Main() NewApplication <<new>> CHelloWorldApplication AppDllUid CreateDocumentL NewL CHelloWorldDocument <<constructor>> ConstructL AppDllUid CreateAppUiL <<constructor>> CHelloWorldAppUi ConstructL BaseConstructL 50

51 bld.inf bld.inf PRJ_PLATFORMS WINSCW ARMV5 GCCE PRJ_MMPFILES gnumakefile icons_scalable_dc.mk Peekaboo.mmp 51

52 Peekaboo.mmp TARGET TARGETTYPE UID Peekaboo_0xE3C01E61.exe exe 0x100039CE 0xE3C01E61... USERINCLUDE..\inc SOURCEPATH SOURCE SOURCE SOURCE SOURCE SOURCE..\src Peekaboo.cpp PeekabooApplication.cpp PeekabooAppView.cpp PeekabooAppUi.cpp PeekabooDocument.cpp SYSTEMINCLUDE LIBRARY LIBRARY LIBRARY LIBRARY LIBRARY LIBRARY LIBRARY LIBRARY LIBRARY \epoc32\include euser.lib apparc.lib cone.lib eikcore.lib avkon.lib commonengine.lib efsrv.lib estor.lib aknnotify.lib SOURCEPATH..\data START RESOURCE Peekaboo.rss HEADER TARGET Peekaboo_0xE3C01E61 TARGETPATH resource\apps END //RESOURCE START RESOURCE Peekaboo_reg.rss TARGET Peekaboo_0xE3C01E61_reg TARGETPATH \private\10003a3f\apps END //RESOURCE... LANG SC VENDORID 0 SECUREID 0xE3C01E61 CAPABILITY ReadUserData #ifdef ENABLE_ABIV2_MODE DEBUGGABLE_UDEBONLY #endif 52

53 Peekaboo.mmp A.mmp fájl tartalma garfikus felületen is beállítható. 53

54 Peekaboo.rss NAME PEEK // 4 letter ID #include <eikon.rh> #include <avkon.rsg> #include <avkon.rh> #include <appinfo.rh> #include "Peekaboo.hrh" #include "Peekaboo.rls" RESOURCE RSS_SIGNATURE RESOURCE TBUF r_default_document_name buf="peek";... RESOURCE MENU_PANE r_menu items = MENU_ITEM command = ECommand1; txt = qtn_command1;, MENU_ITEM command = EAknSoftkeyExit; txt = qtn_exit; ; RESOURCE EIK_APP_INFO menubar = r_menubar; cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; RESOURCE MENU_BAR r_menubar titles = MENU_TITLE menu_pane = r_menu; ;... RESOURCE TBUF32 r_caption_string buf=qtn_caption_string; RESOURCE TBUF r_command1_text buf=qtn_command1_text; RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info short_caption = qtn_caption_string; caption_and_icon = CAPTION_AND_ICON_INFO caption = qtn_caption_string; number_of_icons = 1; icon_file = "\\resource\\apps\\peekaboo_0xe3c01e61.mif"; ; 54

55 Peekaboo.pan,.rls,.hrh #ifndef PEEKABOO_PAN #define PEEKABOO_PAN Peekabo.pan #define _UID3 0xE3C01E61 Peekaboo.hrh enum TPeekabooPanics EPeekabooUi = 1 ; enum TPeekabooIds ECommand1 = 0x6001 // start value must not be 0 ; inline void Panic(TPeekabooPanics areason) _LIT(applicationName, "Peekaboo"); User::Panic(applicationName, areason); #endif // PEEKABOO_PAN Peekaboo.rls #define qtn_caption_string "Peekaboo" #define qtn_command1 "Command1" #define qtn_exit "Exit" #define qtn_command1_text "Game of Peek a Boo!" #define qtn_loc_resource_file_1 "\\resource\\apps\\peekaboo_0xe3c01e61" 55

56 Peekaboo.cpp #include <eikstart.h> #include "PeekabooApplication.h" LOCAL_C CApaApplication* NewApplication() return new CPeekabooApplication; GLDEF_C TInt E32Main() return EikStart::RunApplication(NewApplication); E32Main() 56

57 PeekabooApplication osztály #include <aknapp.h> #include "Peekaboo.hrh" PeekabooApplication.h const TUid KUidPeekabooApp = _UID3 ; class CPeekabooApplication : public CAknApplication public: TUid AppDllUid() const; protected: CApaDocument* CreateDocumentL(); ; #include "Peekaboo.hrh" #include "PeekabooDocument.h" #include "PeekabooApplication.h" PeekabooApplication.cpp CApaDocument* CPeekabooApplication::CreateDocumentL() // Create an Peekaboo document, and return a pointer to it return CPeekabooDocument::NewL(*this); TUid CPeekabooApplication::AppDllUid() const // Return the UID for the Peekaboo application return KUidPeekabooApp; 57

58 PeekabooDocument osztály - definíció PeekabooAppDocument.h #include <akndoc.h> class CPeekabooAppUi; class CEikApplication; class CPeekabooDocument : public CAknDocument public: static CPeekabooDocument* NewL(CEikApplication& aapp); static CPeekabooDocument* NewLC(CEikApplication& aapp); virtual ~CPeekabooDocument(); public: CEikAppUi* CreateAppUiL(); private: void ConstructL(); CPeekabooDocument(CEikApplication& aapp); ; 58

59 PeekabooDocument osztály - implementáció #include "PeekabooAppUi.h" #include "PeekabooDocument.h" PeekabooDocument.cpp CPeekabooDocument* CPeekabooDocument::NewL(CEikApplication& aapp) CPeekabooDocument* self = NewLC(aApp); CleanupStack::Pop(self); return self; CPeekabooDocument* CPeekabooDocument::NewLC(CEikApplication& aapp) CPeekabooDocument* self = new (ELeave) CPeekabooDocument(aApp); CleanupStack::PushL(self); self->constructl(); return self; CEikAppUi* CPeekabooDocument::CreateAppUiL() return new (ELeave) CPeekabooAppUi; 59

60 PeekabooAppUi osztály - definíció #include <aknappui.h> class CPeekabooAppView; class CPeekabooAppUi : public CAknAppUi public: void ConstructL(); CPeekabooAppUi(); virtual ~CPeekabooAppUi(); private: void HandleCommandL(TInt acommand); void HandleStatusPaneSizeChange(); private: CPeekabooAppView* iappview; ; PeekabooAppUi.h 60

61 PeekabooAppUi osztály implementáció 1. PeekabooAppUi.cpp void CPeekabooAppUi::ConstructL() BaseConstructL(CAknAppUi::EAknEnableSkin); iappview = CPeekabooAppView::NewL(ClientRect()); AddToStackL(iAppView); CPeekabooAppUi::~CPeekabooAppUi() if (iappview) ieikonenv->removefromstack(iappview); delete iappview; iappview = NULL; 61

62 PeekabooAppUi osztály implementáció 2. void CPeekabooAppUi::HandleCommandL(TInt acommand) switch (acommand) case EEikCmdExit: case EAknSoftkeyExit: Exit(); break; PeekabooAppUi.cpp case ECommand1: HBufC* textresource = StringLoader::LoadLC(R_COMMAND1_TEXT); CAknInformationNote* informationnote; informationnote = new (ELeave) CAknInformationNote; informationnote->executeld(*textresource); CleanupStack::PopAndDestroy(textResource); break; default: Panic(EPeekabooUi); break; void CPeekabooAppUi::HandleStatusPaneSizeChange() iappview->setrect(clientrect()); 62

63 PeekabooAppView osztály - definíció #include <coecntrl.h> class CPeekabooAppView : public CCoeControl public: static CPeekabooAppView* NewL(const TRect& arect); static CPeekabooAppView* NewLC(const TRect& arect); PeekabooAppView.h virtual ~CPeekabooAppView(); public: void Draw(const TRect& arect) const; virtual void SizeChanged(); virtual void HandlePointerEventL(const TPointerEvent& apointerevent); private: void ConstructL(const TRect& arect); CPeekabooAppView(); ; 63

64 PeekabooAppView osztály implementáció 1. CPeekabooAppView* CPeekabooAppView::NewL(const TRect& arect) CPeekabooAppView* self = CPeekabooAppView::NewLC(aRect); CleanupStack::Pop(self); return self; PeekabooAppView.cpp CPeekabooAppView* CPeekabooAppView::NewLC(const TRect& arect) CPeekabooAppView* self = new (ELeave) CPeekabooAppView; CleanupStack::PushL(self); self->constructl(arect); return self; void CPeekabooAppView::ConstructL(const TRect& arect) CreateWindowL(); SetRect(aRect); ActivateL(); 64

65 PeekabooAppView osztály implementáció 2. void CPeekabooAppView::Draw(const TRect& /*arect*/) const CWindowGc& gc = SystemGc(); TRect drawrect(rect()); gc.clear(drawrect); PeekabooAppView.cpp void CPeekabooAppView::HandlePointerEventL(const TPointerEvent& apointerevent) CCoeControl::HandlePointerEventL(aPointerEvent); 65

66 Erőforrás módosítása fordítás, futtatás Ha a projektünkben módosítjuk az.rss fájl, akkor fordítás előtt az emulátort be kell zárni. 66

67 Fordítás, futtatás void CPeekabooAppUi::HandleCommandL(TInt acommand)... case ECommand1: HBufC* textresource = StringLoader::LoadLC(R_COMMAND1_TEXT); CAknInformationNote* informationnote; informationnote = new (ELeave) CAknInformationNote; informationnote->executeld(*textresource); CleanupStack::PopAndDestroy(textResource);... 67

68 Generált fájlok törlése Window -> Preferences -> Carbide.c++ -> Build

69 Fájlok törlése

70

71 71

72 private: HBufC *ihellomessage; PeekabooAppView.h PeekabooAppView.cpp #include <gdi.h> #include <EIKENV.H> _LIT(KHelloMessage,"Hello Peekaboo!"); void CPeekabooAppView::ConstructL(const TRect& arect) CreateWindowL(); SetRect(aRect); ActivateL(); Peekaboo.mmp SYSTEMINCLUDE \epoc32\include... LIBRARY gdi.lib... ihellomessage=hbufc::newl(30); *ihellomessage=khellomessage; CPeekabooAppView::~CPeekabooAppView() delete ihellomessage; 72

73 void CPeekabooAppView::Draw(const TRect& /*arect*/) const /*CWindowGc& gc = SystemGc(); TRect drawrect(rect()); gc.clear(drawrect);*/ CWindowGc& gc = SystemGc(); TRect drawrect(rect()); gc.clear(drawrect); drawrect.shrink(10,10); gc.drawrect(drawrect); const CFont* fontused = CEikonEnv::Static()->TitleFont(); gc.usefont(fontused); TInt baselineoffset = (drawrect.height() + fontused->heightinpixels())/2; gc.drawtext(*ihellomessage,drawrect,baselineoffset,cgraphicscontext::ecenter,0); gc.discardfont(); A projekt letölthető a people.inf.elte.hu/nacsa/symbian/projects/peekaboo_02 címről. 73

74 A projekt letölthetők a people.inf.elte.hu/nacsa/symbian/projects/peekaboo_01 people.inf.elte.hu/nacsa/symbian/projects/peekaboo_02 címről. Betöltés: Carbide.C++/File/import/ /bld.inf

Mobil alkalmazások fejlesztése

Mobil alkalmazások fejlesztése Tartalom Peekabo a legkisebb projekt... 2 A fordítás és szerkesztés folyamata... 2 Peekabo.mmp... 2 Peekaboo.pan... 3 Peekaboo.rss... 3 Peekaboo.rls... 4 Peekaboo.hrh... 4 Főprogram... 5 Peekaboo.cpp...

Részletesebben

Mobil alkalmazások fejlesztése. ELTE PSZT március

Mobil alkalmazások fejlesztése. ELTE PSZT március Mobil alkalmazások fejlesztése ELTE PSZT 2010. március Előkészületek 1. Perl 5.6.x (Set the pathvariable!) 5.8 /5.10 nem jó! http://downloads.activestate.com/activeperl/windows/5.6/activeperl- 5.6.1.638-MSWin32-x86.msi

Részletesebben

Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália

Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália Mobil alkalmazások fejlesztése Készítette: Szabóné Nacsa Rozália S60 és UIQ Application suites UI implementation UI framework S 60 UIQ MOAP Symbian OS HW adaptation Hardware Symbian Symbian OS S60 C++

Részletesebben

Tartalomjegyzék. Előszó... 10

Tartalomjegyzék. Előszó... 10 Előszó... 10 1. Bevezetés a Symbian operációs rendszerbe... 11 1.1. Az operációs rendszer múltja...11 1.2. Az okos telefonok képességei...12 1.3. A Symbian felépítése...15 1.4. A könyv tartalma...17 2.

Részletesebben

Szakdolgozat OROSZ TIVADAR. Műszaki informatikai szak, gazdasági informatikai szakirány, nappali tagozat

Szakdolgozat OROSZ TIVADAR. Műszaki informatikai szak, gazdasági informatikai szakirány, nappali tagozat Szakdolgozat OROSZ TIVADAR Műszaki informatikai szak, gazdasági informatikai szakirány, nappali tagozat Kecskeméti Főiskola Gépipari és Automatizálási Műszaki Főiskolai Kar KECSKEMÉT 2005 Kecskeméti Főiskola

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

1. Bevezetés A C++ nem objektumorientált újdonságai 3

1. Bevezetés A C++ nem objektumorientált újdonságai 3 Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.

Részletesebben

Bevezetés, a C++ osztályok. Pere László

Bevezetés, a C++ osztályok. Pere László Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK

Részletesebben

Programozás II gyakorlat. 6. Polimorfizmus

Programozás II gyakorlat. 6. Polimorfizmus Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással

Részletesebben

Osztály és objektum fogalma

Osztály és objektum fogalma Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály

Részletesebben

Programozás C++ -ban

Programozás C++ -ban Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több

Részletesebben

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} }; A C++ kódokban lévő makrókat melyik egység dolgozza fel az alábbiak közül? preprocessor A szabványos C++-ban nem is írhatunk makrókat (csak C-ben) assembler linker Az alábbi példában a Foo f(5); konstruktor

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

Részletesebben

Google C++ style guide

Google C++ style guide Április 3, 2013 Tartalomjegyzék Amiről szó lesz... Header állományok Hatókör Osztályok Elnevezések Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások,

Részletesebben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális

Részletesebben

ISA szimulátor objektum-orientált modell (C++)

ISA szimulátor objektum-orientált modell (C++) Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált

Részletesebben

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs

Szoftver labor III. Tematika. Gyakorlatok. Dr. Csébfalvi Balázs Szoftver labor III. Dr. Csébfalvi Balázs Irányítástechnika és Informatika Tanszék e-mail: cseb@iit.bme.hu http://www.iit.bme.hu/~cseb/ Tematika Bevezetés Java programozás alapjai Kivételkezelés Dinamikus

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Mobil Informatikai Rendszerek

Mobil Informatikai Rendszerek Mobil Informatikai Rendszerek Android NDK Native Development Kit 2016. november 27. Sicz-Mesziár János sicz- m e s z i a r. j a n o s @ nik.uni - obuda.hu NDK Native Development Kit Egy set of tools, amely

Részletesebben

Eseményvezérelt alkalmazások

Eseményvezérelt alkalmazások Szabóné Nacsa Rozália nacsa@inf.elte.hu Eseményvezérelt alkalmazások A Windows alkalmazások eseményvezérelt alkalmazások Esemény: egér kattintás billenty leütés stb. Üzenetkezelés Operációs rendszer kódja

Részletesebben

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat

Részletesebben

Konkurens TCP Szerver

Konkurens TCP Szerver A gyakorlat célja: Konkurens TCP Szerver Megismerkedni a párhuzamos programozás és a konkurens TCP szerver készítésének az elméleti és gyakorlati alapjaival és egy egyidejűleg több klienst is kiszolgáló

Részletesebben

Objektumok inicializálása

Objektumok inicializálása Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

A Java és a C++ összehasonlítása

A Java és a C++ összehasonlítása A Java és a C++ összehasonlítása Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2008. Kozsik Tamás (ELTE) A Java és a C++

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. Grafikus felületű alkamazások készítése Bevezetés I. Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2009 1 www.trolltech.com

Részletesebben

Bevezetés a programozásba Előadás: A const

Bevezetés a programozásba Előadás: A const Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout

Részletesebben

1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4

1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4 1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4 2) Hány byte-on tárol a C++ egy float-ot? implementáció-függő 6 4 8 3) Hány byte-on tárol a C++

Részletesebben

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira Programozás II gyakorlat 7. Példák a polimorfizmus alkalmazásaira Probléma class A { public: ~A() { cout

Részletesebben

Programozás II. 4. Dr. Iványi Péter

Programozás II. 4. Dr. Iványi Péter Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include

Részletesebben

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Készítette: Gregorics Tibor Szabóné Nacsa Rozália Alakítsunk át egy infix formájú aritmetikai kifejezést postfix

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

Operációs rendszerek. Az NT folyamatok kezelése

Operációs rendszerek. Az NT folyamatok kezelése Operációs rendszerek Az NT folyamatok kezelése Folyamatok logikai felépítése A folyamat modell: egy adott program kódját végrehajtó szál(ak)ból és, a szál(ak) által lefoglalt erőforrásokból állnak. Folyamatok

Részletesebben

C#, OOP. Osztályok tervezése C#-ban

C#, OOP. Osztályok tervezése C#-ban C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat

Részletesebben

Cekla. Készítette Doxygen Tue Sep :13:44

Cekla. Készítette Doxygen Tue Sep :13:44 Cekla Készítette Doxygen 1.7.1 Tue Sep 20 2011 14:13:44 TARTALOMJEGYZÉK 1 Tartalomjegyzék 1. Cekla C++ könyvtár deklaratív C++-hoz 1 2. Modulmutató 1 2.1. Modulok............................................

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str="zh"; str[0]++;

- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str=zh; str[0]++; Az alábbi feladatokat a AUT.BME.HU tanszéki weboldalon fellelhető AUT C++ Példatárból másoltam ki. A feladatokat a Programozás alapjai 2. ZH-ra való felkészülés jegyében válogattam, a példák nagy részét

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens Hozzunk létre egy ASP.NET Empty Web Site projektet! A projekt neve legyen WCFAPP1. Ez

Részletesebben

Concurrency in Swing

Concurrency in Swing Concurrency in Swing A szálkezelés a swing alkalmazásokban is fontos. Cél egy olyan felhasználói felület készítése, amely soha nem fagy, mindig válaszol a felhasználói interakciókra, bármit is csináljon

Részletesebben

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;

Részletesebben

Elemi alkalmazások fejlesztése III.

Elemi alkalmazások fejlesztése III. Elemi alkalmazások fejlesztése III. Bevezetés Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu people.inf.elte.hu/nacsa/qt4/eaf3/ Qt 4 2007 1 A Qt assistant nyitó ablaka www.trolltech.com 2 Alkalmazás

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Bevezetés a programozásba Előadás: Fordítási egység

Bevezetés a programozásba Előadás: Fordítási egység Bevezetés a programozásba 2 5. Előadás: Fordítási egység ISMÉTLÉS Tagfüggvény kiemelése struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; void Particle::rajzol() { gout

Részletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ programozási nyelv Konstruktorok-destruktorok C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás: Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból

Részletesebben

Szoftvergyártás: gyártásvezérlés kód-figyeléssel

Szoftvergyártás: gyártásvezérlés kód-figyeléssel Szoftvergyártás: gyártásvezérlés kód-figyeléssel Előadó: Banai Miklós és Rakyta Péter Pályázatok: TECH_08-A2/2-2008-0089-SZOMIN08; KMOP-1.1.1-08/1-2008-0019; KMOP-1.1.2-08/1-2008-0002 Vízió: Szoftvergyártás

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I. Programozási Nyelvek és Fordítóprogramok Tanszék Programozási Nyelvek I. Témák 1 Bevezetés 2 A C++ alapfilozófiája 3 Névterek/namespace-ek 4 Függvények 5 Referenciák C++-ban Motiváció A C és a C++ nyelv

Részletesebben

Mobil operációs rendszerek. Hidasi Balázs Szendrei Gábor

Mobil operációs rendszerek. Hidasi Balázs Szendrei Gábor Mobil operációs rendszerek Hidasi Balázs Szendrei Gábor Mitıl okos egy telefon? Nem egyértelmően meghatározható Leginkább: Mobiltelefon fejlett képességekkel, már-már PC szerő funkcionalitással Függ magától

Részletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float

Részletesebben

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int

Részletesebben

C++ programok fordítása

C++ programok fordítása C++, 1/ 33 C++ programok fordítása Pataki Norbert 2012. február 24. C++, 2/ 33 Információk Pataki Norbert, patakino@elte.hu http://patakino.web.elte.hu/levelezo Jegy: gyakorlat, Szűgyi Zalán C++, 3/ 33

Részletesebben

Dr. Schuster György október 14.

Dr. Schuster György október 14. Real-time operációs rendszerek RTOS 2011. október 14. A fordítás vázlata prog.c Előfeldolgozó Átmenti állomány Fordító prog.obj más.obj-tek könyvtárak indító kód Linker futtatható kód Ismétlés Előfeldolgozó

Részletesebben

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: Operációs rendszerek MS Windows NT (2000) folyamatok Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok: szálak ütemezése végrehajtásra

Részletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere 2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Vizuális, eseményvezérelt programozás XI.

Vizuális, eseményvezérelt programozás XI. Vizuális, eseményvezérelt programozás XI ÓE-NIK, 2011 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik Ismeretük szükséges,

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

OOP és UML Áttekintés

OOP és UML Áttekintés OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés

Részletesebben

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI) Eötvös Loránd Tudományegyetem Informatikai Kar Webes alkalmazások fejlesztése 8. előadás (ASP.NET WebAPI) 2016 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto A webszolgáltatás

Részletesebben

Bevezetés a Symbian operációs rendszerbe

Bevezetés a Symbian operációs rendszerbe 1. FEJEZET Bevezetés a Symbian operációs rendszerbe Napjainkban a mobilkommunikáció szerepe és piaca átalakulóban van. A pusztán távközlésre kialakított eszközből a technológiai fejlődés, a felhasználói

Részletesebben

Memóriakezelés, dinamikus memóriakezelés

Memóriakezelés, dinamikus memóriakezelés Metódus: függvények és eljárások összefoglaló neve. Memóriakezelés, dinamikus memóriakezelés Nézzük végig, a C++ memóriakezelését. Alapvetően három fő memóriaterületet különböztetünk meg. Végrehajtási

Részletesebben

JAVA SE/ME tanfolyam tematika

JAVA SE/ME tanfolyam tematika JAVA SE/ME tanfolyam tematika TANFOLYAM TEMATIKA: A JAVA MEGISMERÉSE Java története, miért készült, miért népszerű NETBEANS környezet telepítése, megismerése Programozási alapok java nyelven Változók,primitív

Részletesebben

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

BME MOGI Gépészeti informatika 8.

BME MOGI Gépészeti informatika 8. BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező

Részletesebben

Bánsághi Anna anna.bansaghi@mamikon.net

Bánsághi Anna anna.bansaghi@mamikon.net ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64

Részletesebben

Komponens alapú fejlesztés

Komponens alapú fejlesztés Komponens alapú fejlesztés Szoftver újrafelhasználás Szoftver fejlesztésekor korábbi fejlesztésekkor létrehozott kód felhasználása architektúra felhasználása tudás felhasználása Nem azonos a portolással

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

Részletesebben

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 4. előadás 2014.03.03. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Programok

Részletesebben

Mobil Informatikai Rendszerek

Mobil Informatikai Rendszerek Mobil Informatikai Rendszerek Android NDK Native Development Kit Sicz-Mesziár János sicz-mesziar.janos@nik.uni-obuda.hu Mezei József mezei.jozsef@nik.uni-obuda.hu 2018. április 22. NDK Native Development

Részletesebben

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI

Részletesebben

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Swing GUI készítése NetBeans IDE segítségével Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Bevezető Eddig a grafikus felhasználói felületet kódból hoztuk létre kézzel. A mi

Részletesebben

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME SDI ALKALMAZÁS I. Feladat: Készítsünk egy olyan alkalmazást, amely az év végi adózás céljából rögzíti egyetlen évközi bevételnek az adatait: bruttó jövedelem adóel ı leg nettó bevétel jövedelem forrása

Részletesebben

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT alapjai, bevezetés Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu PHP Personal Home Page (Tools) Script nyelv -> interpretált Elsősorban weboldal (dinamikus) tartalmak előállítására

Részletesebben

Programozás 6. Dr. Iványi Péter

Programozás 6. Dr. Iványi Péter Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 12. gyakorlat 1 Távoli metódushívás Java-ban (RMI) Java-ban a távoli metódushívás ( Remote Method Invocation, RMI) egy

Részletesebben

C# osztályok. Krizsán Zoltán

C# osztályok. Krizsán Zoltán C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC

Részletesebben

Autóipari beágyazott rendszerek. Komponens és rendszer integráció

Autóipari beágyazott rendszerek. Komponens és rendszer integráció Autóipari beágyazott rendszerek és rendszer integráció 1 Magas szintű fejlesztési folyamat SW architektúra modellezés Modell (VFB) Magas szintű modellezés komponensek portok interfészek adattípusok meghatározása

Részletesebben

Programozás. Osztályok, Származtatott osztályok. Fodor Attila

Programozás. Osztályok, Származtatott osztályok. Fodor Attila Programozás Osztályok, Származtatott osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. március 11. Beadandó feladat

Részletesebben

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelık Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvető jellemzői Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzők, JDK JAVA1 / 1 Egy kis történelem

Részletesebben