Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália ELTE PSZT szeptember
|
|
- Áron Hegedűs
- 5 évvel ezelőtt
- Látták:
Á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
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észletesebbenMobil 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észletesebbenMobil 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észletesebbenTartalomjegyzé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észletesebbenSzakdolgozat 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észletesebbenSzá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észletesebben3. 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észletesebben1. 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észletesebbenBevezeté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észletesebbenProgramozá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észletesebbenOsztá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észletesebbenProgramozá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észletesebbenAz 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észletesebbenProgramozá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észletesebbenGoogle 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észletesebbenStatikus 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észletesebbenPé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észletesebbenISA 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észletesebbenSzoftver 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észletesebbenPelda ö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észletesebbenMobil 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észletesebbenEsemé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észletesebbenVisual 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észletesebbenKonkurens 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észletesebbenObjektumok 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észletesebbenPé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észletesebbenA 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észletesebbenProgramozá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észletesebbenWeb-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észletesebben1. 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észletesebbenElemi 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észletesebbenBevezeté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észletesebben1) 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észletesebbenProgramozá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észletesebbenProgramozá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észletesebbenObjektum 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észletesebbenC 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észletesebbenOperá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észletesebbenC#, 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észletesebbenCekla. 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észletesebbenOsztá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]++;
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észletesebbenSzé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észletesebbenWCF, 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észletesebbenConcurrency 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észletesebbenBevezeté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észletesebbenElemi 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észletesebbenSzoftvertechnoló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észletesebbenBevezeté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észletesebbenProgramozá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észletesebbenC++ 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észletesebbenJava 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észletesebbenSzoftvergyá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észletesebbenJava 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észletesebbenC 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észletesebbenMobil 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észletesebben1. 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észletesebbenJava é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észletesebbenBevezeté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észletesebbenC++ 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észletesebbenDr. 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észletesebbenOperá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észletesebbenOsztá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észletesebbenA 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észletesebbenOOP #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észletesebbenProgramozá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észletesebbenProgramozá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észletesebbenVizuá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észletesebbenMechatronika é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észletesebbenOOP é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észletesebbenWebes 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észletesebbenBevezeté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észletesebbenMemó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észletesebbenJAVA 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észletesebbenProgramozá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észletesebbenC 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észletesebbenBME 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észletesebbenBá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észletesebbenKomponens 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észletesebben1. 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észletesebbenJava é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észletesebbenBevezeté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észletesebbenMobil 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észletesebbenWEBFEJLESZTÉ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észletesebbenTartalom 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észletesebbenSzá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észletesebbenJava 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észletesebbenProgramozá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észletesebbenBevezeté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észletesebbenProgramozá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észletesebbenSDI 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észletesebbenPHP 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észletesebbenProgramozá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észletesebbenSegé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észletesebbenC# 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észletesebbenAutó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észletesebbenProgramozá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észletesebbenC# 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észletesebbenObjektumorientá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észletesebbenJava 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