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

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

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

Átírás

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

2 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áljon hálózati meghajtót! Fájl nevekben ne használjon helyközt.)

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

4 Online dokumentáció c:\s60\devices\s60_3rd_fp2_sdk_v1.1\docs\eclipse.exe

5 Symbian operációs rendszer 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++

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

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 Mobil alkalmazások fejlesztése, Symbian OS/C++ 7

8 Fájl kezelés Hívó kliens File szerver kliens oldali része mytest.exe efsrsv.dll szolgáltatás kérés (API hívások) pl.: RFs::Connect() Process boundary File server efile.exe Kliens-szerver kommunikáció (Kernel által felügyelt) //File I/O in Symbian OS RFs fsession; User::LeaveIfError(fSession.Connect()); RFile file; ret = file.open(fsession, _L( file.txt ), EFileWrite); if (ret) ret = file.create(fsession, _L( file.txt ), EFileWrite); if (!ret) file.write(_l8( Write some data )); file.close(); fsession.close();

9 Futtaható program modularizálása Forráskód.exe Forráskód.exe Futtató környezet.exe Kép Kép Erőforrás szöveg Erőforrás szöveg Kód Fájl szerver Ablak szerver... indexek Kód Fájl szerver Ablak szerver...

10 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

11 Biztonságos alkalmazás fejlesztésének támogatása Saját elnevezési konvenciók: osztályok (T,C,M,R), függvények (L,LC) Kódolási minták a memóriaszivárgás kiszűrésére: kétfázisú konstrukció, CleanUpStack Saját kivételkezelés: TRAP és User::Leave String helyett deszkriptorok Többszálúság kezelése: ActiveObject...

12 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 Az osztályelnevezéseknek fontos üzenete van, ezért mindig jól át kell gondolni, hol és hogyan használjuk az osztály példányait, és ennek megfelelően kel elnevezni őket. A névkonvenció segíti a fejlesztőt abban, hogyan használhatja majd ezeket az osztályokat anélkül, hogy mélyebben beleásná magát az adott osztály implementációjába. C osztályként definiálhatunk pl. olyan osztályt is, amely túl nagy, és nem ajánlatos stack-ben tárolni.

13 T osztályok - példa TInt n; enum TColors KRed, KBlue ; class TMyNumber public: void SetNumber (TInt anumber); TInt Number() const; private: TInt inumber; ;

14 R osztályok - példa TInt doexamplel() RFs fsession; User::LeaveIfError(fSession.Connect()); RFile file; TInt ret = file.open(fsession,_l("c:\\resource\\apps\\second.txt"),efilewrite); if(ret) ret = file.create(fsession,_l("c:\\resource\\apps\\second.txt"),efilewrite); if(!ret) file.write(_l8("write some new data")); file.close(); fsession.close(); return ret;

15

16 Kivételkezelés try utasítások; // A kivétel figyelése alatt álló "veszélyes" utasítások catch (kivétel deklaráció) //A kivétel kezelője utasítások; ; int foo1(); //Minden kivétel továbbítódik int foo2() throw (char*) //csak a char* típusú kivételek továbbítódnak int foo3() throw() // egyetlen kivétel sem továbbítódik C++-os kivételkezelés Symbianos kivételkezelés void CMyClass::Foo() TRAPD (error, HandleKeyL())) if(error!= KErrNone) //Ha a HandleKeyL() leavel, akkor ideadódik a vezérlés //és kezelhetjük a hibát

17 Kivételkezelés - leavelés A Symbianban a C++-os kivételkezelés helyett (mellett) a kivételes szituációk kezelésére a leavelést használják. Leavelésnél a kivételes szituáció helyéről átkerül a vezérlés oda, ahol a kivételes helyzetet kezelni tudjuk. (TRAP) Mikor leave-elhet egy függvény? Ha közvetlenül meghívja a User::Leave() függvényt Heapen foglal helyet new (ELeave) metódussal Más leave-elő függvényt hív Majd látni fogjuk, hogy azokban a kódrészekben, ahol leavelő függvényhívások (is) vannak fokozottabb gondossággal kell eljárni, ezért a programozónak feltétlenül tudnia kell egy függvényről, hogy esetleg leavelhet. Symbianban azt, hogy egy függvény leavelhet a függvény nevében, a neve végén megadott L betűvel jelezzük.

18 Kivételkezelés C++-os kivételkezelés A kivétel keletkezésekor egy objektumot dobunk Egy try blokkban vagy az abból hívott függvényekben keletkező kivételt a catch blokkban elkaphatjuk és lekezelhetjük. A kivétel keletkezésekor a vezérlés visszatér a hívó blokkba, majd az azt hívóba fel és fel, amíg kivételt le nem kezeljük. Közben a verem memória (stack) visszafejtésre kerül, az abból kikerülő objektumok destruktorai meghívódnak. Symbianos kivételkezelés A kivétel keletkezésekor egy egész szám (hiba kód) generálódik. Egy TRAP vagy TRAPD makróval meghívott függvényben vagy abból hívott függvényekben keletkező kivételt a makróban lekezelhetjük. A kivétel keletkezésekor a vezérlés visszatér a hívó blokkba, majd az azt hívóba fel és fel, amíg kivételt le nem kezeljük. Közben a verem memória kiürül, de az abból kikerülő objektumok destruktorai nem hívódnak meg Mobil alkalmazások fejlesztése, Symbian OS/C++ 18

19 Memóriakezelés void CMyClass::Foo() TInt myinteger; TBufC<16> buffer;... //függvény törzs Helyfoglalás a stack-en //A lefoglalt hely kilépéskor törlődik void CBasicAppUi::Foo() CMyClass* myptr = new CMyClass; if(myptr) myptr->foo(); //Adatok és függvények biztonságos elérése delete myptr; Helyfoglalás és biztonságos elérés a heapen A kódolást nagyon nehézkessé tenné, ha minden helyfoglalást becsomagolnánk egy ilyen ellenőrzésbe.

20 Objektum létrehozása a heapen Symbianban 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(); Ha nincs hely, akkor leavel.... delete myptr; Erre a pontra csak akkor kerül a vezérlés, ha biztosan megtörtént a helyfoglalás.

21 CleanupStack LOCAL_C void MainL() CMyClass* myptr = new (ELeave) CMyClass; myptr->foo();... delete myptr; Nem leavelő függvényt hívunk. case ECleanupCmdUse3: CX* x=new(eleave) CX; x->usel(); delete x; Leavelő függvényt hívunk. 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. Megoldás: CleanupStack 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.

22 CleanupStack alkalmazása case ECleanupCmdUse3: CX* x1=new(eleave) CX; CleanupStack::PushL(x1); CX* x2=new(eleave) CX; CleanupStack::PushL(x2); x1-<usel(); CleanupStack::PopAndDestroy(2); Egyszerre több elemet is leemelhetünk a stackről. Tilos!! CleanupStack::PushL(iMember); Pointert tartalmazó adattagot ne tegyünk a CleanupStack-re. Az általa mutatott terület felszabadítása az adattagot tartalmazó osztály feladata, nem a Leave-elő mechanizmusé. A PushL() nem leave-el (előrefoglalás miatt)

23 Leavelés és CleanupStack case ECleanupCmdUse3: CX* x=new(eleave) CX; TRAPD (error, x->usel(); if(error) delete x; User::Leave(error); delete x; Leave kezelése TRAP segítségével. Több függvényhívás esetén mindegyiket bele kellene tenni egy TRAP konstrukcióba. case ECleanupCmdUse3: CX* x=new(eleave) CX; CleanupStack::PushL(x); x->usel(); x->usel(); x->usel(); CleanupStack::PopAndDestroy(x); A CleanupStack használatával egyserűbben kódolhatjuk, ha egy eljárson belül több leavelő függvényt is meg kell hívnunk.

24 Mostmár minden rendben van? class CY : public CBase public: CY(); ~CY(); public: CX* ix; ; CY::CY() // bad bad 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: Az y példányosításakor az Y konstruktora leaveelhet és a félkész y által lefoglalt tárhely árván marad. CY* y=new(eleave) CY; CleanupStack::PushL(y); y->ix->usel(); CleanupStack::PopAndDestroy(); // y

25 Dinamikus osztály példányosítása - probléma class CY : public CBase public: CY(); ~CY(); public: CX* ix; ; CY::CY() // bad bad ix=new(eleave) CX; CY::~CY() delete ix; class CX : public CBase public: void UseL(); public: TInt iint; ; void CX::UseL() TInt* pi=new(eleave) TInt; delete pi; CY* y=new(eleave) CY; CleanupStack::PushL(y); y->ix->usel(); CleanupStack::PopAndDestroy(); // y CY* y; CY* temp = User::AllocL(sizeof(CY)); //Allocate memory temp->cy::cy(); //C++ constructor y=temp;

26 Megoldás: 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.

27 Kétfázisú konstrukció class CZ : public CBase public: static CZ* NewL(); static CZ* NewLC(); void ConstructL(); ~CZ(); public: CX* ix; ; A két fázist 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;

28 Kétfázisú konstrukció - összefoglalás Az osztály standard konstruktorában nem hívunk leave-elő kódot A leave-elő hívásokat egy külön második fázisú konstruktorba tesszük. (ConstructL) Az osztály példányosításakor: Meghívjuk a standard konstruktort (new) A félig létrejött objektumot feltesszük a CleanupStack-re Meghívjuk a második fázisú konstruktort (ConstructL) (Levesszük a CleanupStack-ről) A két fázist a NewL, NewLC függvényekbe becsomagolják.

29 Cleanup-safe HelloWorld int HelloWorldL() CConsoleBase* console = Console::NewL(_L("Hello World"),TSize(KConsFullScreen,KConsFullScreen)); console->printf(ktxtmessage); console->printf(ktxtpressanykey); console->getch(); // get and ignore character delete console; return 0; Konzolos alkalmazásnál a CleanupStack-et nekünk kell létrehozni. TInt E32Main() UHEAP_MARK; CTrapCleanup* cleanup = CTrapCleanup::New(); TInt retval = KErrNone; if(cleanup) TRAP(retVal,HelloWorldL()); ASSERT_ALWAYS(!retVal, User::Panic(_L("Hello World Panic"),retVal)); delete cleanup; UHEAP_MARKEND; return retval; int main() printf("hello world!\n"; return 0;

30 Aszinkron események kezelése - ActiveObject CDeleyHello.cpp CDelayedHello* CDelayedHello::NewL() CDelayedHello* self = new (ELeave) CDelayedHello(); CleanupStack::PushL(self); self->constructl(); CleanupStack::Pop(self); return self; CDelayedHello::CDelayedHello() : CActive(0) CActiveScheduler::Add(this); void CDelayedHello::ConstructL() ienv = CEikonEnv::Static(); User::LeaveIfError(iTimer.CreateLocal()); CDelayedHello::~CDelayedHello() Cancel(); itimer.close();... ActiveHello projekt

31 Aszinkron események kezelése - ActiveObject CDeleyHello.cpp... // from CActive void CDelayedHello::RunL() ienv->infomsg(r_activehello_text_hello); void CDelayedHello::DoCancel() itimer.cancel(); TInt CDelayedHello::RunError(TInt /*aerror*/) return KErrNone; //Must be given if RunL() calls a leaving function... ActiveHello projekt

32 Deszkriptorok

33 Symbian OS C++ 3rd Edition

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

35 bld.inf PRJ_PLATFORMS DEFAULT bld.inf PRJ_MMPFILES Legkisebb.mmp

36 Legkisebb.mmp TARGET Legkisebb_0x0CBFF1BD.exe TARGETTYPE exe Legkisebb.mmp UID 0x100039CE 0x0CBFF1BD SOURCEPATH..\src SOURCE Legkisebb.cpp LegkisebbApplication.cpp LegkisebbAppView.cpp LegkisebbDocument.cpp LegkisebbAppUi.cpp USERINCLUDE..\inc CAPABILITY ReadUserData SOURCEPATH..\data START RESOURCE Legkisebb.rss TARGET Legkisebb_0x0CBFF1BD TARGETPATH resource\apps HEADER END START RESOURCE Legkisebb_reg.rss TARGET Legkisebb_0x0CBFF1BD_reg TARGETPATH \private\10003a3f\apps END LANG SC SECUREID 0x0CBFF1BD VENDORID 0 SYSTEMINCLUDE \epoc32\include LIBRARY euser.lib apparc.lib cone.lib eikcore.lib avkon.lib commonengine.lib efsrv.lib estor.lib aknnotify.lib gdi.lib

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

38 Legkisebb.rss

39 Legkisebb.pan,.rls,.hrh Legkisebb.pan Legkisebb.rls #ifndef LEGKISEBB_PAN_ #define LEGKISEBB_PAN_ // Caption string for app. #define qtn_caption_string "Legkisebb 0x0CBFF1BD" enum TLegkisebbPanics ELegkisebbUi = 1 ; inline void Panic(TLegkisebbPanics areason) _LIT(applicationName, "Legkisebb-0x0CBFF1BD"); User::Panic(applicationName, areason); #endif /*LEGKISEBB_PAN_*/ #define qtn_caption_string "Legkisebb 0x0CBFF1BD" #ifndef LEGKISEBB_HRH #define LEGKISEBB_HRH #define _UID3 0x0CBFF1BD #endif // LEGKISEBB_HRH Legkisebb.hrh

40 Legkisebb.cpp Legkisebb.cpp #include <eikstart.h> #include "LegkisebbApplication.h" LOCAL_C CApaApplication* NewApplication() return new CLegkisebbApplication; GLDEF_C TInt E32Main() return EikStart::RunApplication( NewApplication );

41 LegkisebbApplication osztály #include <aknapp.h> #include "Legkisebb.hrh" const TUid KUidLegkisebbApp = _UID3 ; class CLegkisebbApplication : public CAknApplication public: TUid AppDllUid() const; protected: CApaDocument* CreateDocumentL(); ; LegkisebbApplication.h #include "Legkisebb.hrh" #include "LegkisebbDocument.h" #include "LegkisebbApplication.h" LegkisebbApplication.cpp CApaDocument* CLegkisebbApplication::CreateDocumentL() return CLegkisebbDocument::NewL(*this); TUid CLegkisebbApplication::AppDllUid() const return KUidLegkisebbApp;

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

43 LegkisebbAppDocument osztály - implementáció #include "LegkisebbAppUi.h" #include "LegkisebbDocument.h" LegkisebbAppDocument.cpp CLegkisebbDocument* CLegkisebbDocument::NewL(CEikApplication& aapp) CLegkisebbDocument* self = NewLC(aApp); CleanupStack::Pop(self); return self; CLegkisebbDocument* CLegkisebbDocument::NewLC(CEikApplication& aapp) CLegkisebbDocument* self = new ( ELeave ) CLegkisebbDocument( aapp ); CleanupStack::PushL(self); self->constructl(); return self; void CLegkisebbDocument::ConstructL() CLegkisebbDocument::CLegkisebbDocument(CEikApplication& aapp) : CAknDocument(aApp) CLegkisebbDocument::~CLegkisebbDocument() CEikAppUi* CLegkisebbDocument::CreateAppUiL() return new ( ELeave )CLegkisebbAppUi;

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

45 LegkisebbAppUi osztály - implementáció void CLegkisebbAppUi::ConstructL() BaseConstructL(CAknAppUi::EAknEnableSkin); iappview = CLegkisebbAppView::NewL(ClientRect() ); CLegkisebbAppUi::CLegkisebbAppUi() CLegkisebbAppUi::~CLegkisebbAppUi() if (iappview) delete iappview; iappview = NULL; #include <aknappui.h> #include <avkon.hrh> #include <aknmessagequerydialog.h> #include <aknnotewrappers.h> #include <Legkisebb_0x0CBFF1BD.rsg> #include "Legkisebb.hrh" #include "Legkisebb.pan" #include "LegkisebbApplication.h" #include "LegkisebbAppUi.h" #include "LegkisebbAppView.h" void CLegkisebbAppUi::HandleCommandL(TInt acommand) switch (acommand) case EEikCmdExit: case EAknSoftkeyExit: Exit(); break; default: Panic(ELegkisebbUi); break; void CLegkisebbAppUi::HandleStatusPaneSizeChange() iappview->setrect(clientrect()); LegkisebbAppUi.cpp

46 LegkisebbAppView osztály - definíció #include <coecntrl.h> class CLegkisebbAppView : public CCoeControl public: static CLegkisebbAppView* NewL(const TRect& arect); static CLegkisebbAppView* NewLC(const TRect& arect); virtual ~CLegkisebbAppView(); public: void Draw(const TRect& arect) const; virtual void SizeChanged(); private: void ConstructL(const TRect& arect); CLegkisebbAppView(); private: HBufC *ihellomessage; LegkisebbAppView.h ;

47 LegkisebbAppView osztály implementáció 1. CLegkisebbAppView* CLegkisebbAppView::NewL(const TRect& arect) CLegkisebbAppView* self = CLegkisebbAppView::NewLC(aRect); CleanupStack::Pop(self); return self; #include <coemain.h> #include <gdi.h> #include <EIKENV.H> #include "LegkisebbAppView.h" CLegkisebbAppView* CLegkisebbAppView::NewLC(const TRect& arect) CLegkisebbAppView* self = new ( ELeave ) CLegkisebbAppView; CleanupStack::PushL(self); self->constructl(arect); return self; _LIT(KHelloMessage,"Hello Legkisebb!"); void CLegkisebbAppView::ConstructL(const TRect& arect) CreateWindowL(); SetRect(aRect); ActivateL(); ihellomessage=hbufc::newl(30); *ihellomessage=khellomessage; CLegkisebbAppView::CLegkisebbAppView() CLegkisebbAppView::~CLegkisebbAppView() delete ihellomessage; LegkisebbAppView.cpp

48 LegkisebbAppView osztály implementáció 2. void CLegkisebbAppView::Draw(const TRect& /*arect*/) const 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(); void CLegkisebbAppView::SizeChanged() DrawNow(); LegkisebbAppView.cpp

49 Carbide++

50 Futtatás Futtatáshoz válasszuk az emulátort, mert így megkapjuk a hibaüzenetet.

51 Hibaüzenetek értelmezése

52 Projektek First Legkisebb ActiveHello ConsLauncher OandX Peekaboo Tutorial: _Tutorial_for_Symbian_C%2B%2B_Applications

53 AandX

54 Kész alkalmazások importálása Carbide.C++ alá Az importálni kívánt projek bld.inf fájlja

55

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

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. Készítette: Szabóné Nacsa Rozália ELTE PSZT szeptember

Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália ELTE PSZT szeptember Mobil alkalmazások fejlesztése Készítette: Szabóné Nacsa Rozália ELTE PSZT 2009. szeptember Irodalom Charaf Hassan, Csúcs Gergely, Forstner Bertalan: Symbian alapú szoftverfejlesztés Richard Harrison:

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

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

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

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

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

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

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

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

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

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

Kivételkezelés a C++ nyelvben Bevezetés

Kivételkezelés a C++ nyelvben Bevezetés Kivételkezelés a C++ nyelvben Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Kivételkezelés a C++ nyelvben CPP9 / 1 Hagyományos hibakezelés Függvény visszatérési értéke (paramétere) hátrányai:

Részletesebben

Kivételek, kivételkezelés a C++ nyelvben

Kivételek, kivételkezelés a C++ nyelvben 2009. Kivételek, kivételkezelés a C++ nyelvben Haladó C++ programozás Kurucz Attila ELTE - IK 2009.06.09. Tartalomjegyzék Tartalomjegyzék... 2 Mi a kivételkezelés?... 3 Alapfogalmak... 3 Kivétel... 3 Try

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

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015 Objektumorientált programozás Pál László Sapientia EMTE, Csíkszereda, 2014/2015 9. ELİADÁS Kivételkezelés (Exception handling) 2 Mi a kivétel (exception)? A kivétel, olyan hibás állapot vagy esemény, amely

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

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

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

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

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

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

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

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

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

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

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

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

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++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

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 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

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C++ programozási nyelvbe Oktatási segédlet Összeállította: Ficsor Lajos 2001. 1. A C++ programozási nyelv története A C++ programozási nyelv

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

Java programozási nyelv 9. rész Kivételkezelés

Java programozási nyelv 9. rész Kivételkezelés Java programozási nyelv 9. rész Kivételkezelés 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/24 Tartalomjegyzék

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

Programozás II gyakorlat. 4. Öröklődés

Programozás II gyakorlat. 4. Öröklődés Programozás II gyakorlat 4. Öröklődés Feladat Egy játékfejlesztő cég olyan programot fejleszt, amely nyilvántartja az alkalmazottai adatait. Tároljuk minden személy: Nevét (legfeljebb 50 karakter) Születési

Részletesebben

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 PHP II. WEB technológiák Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 Tartalomjegyzék Objektum Orientált Programozás 1 Objektum Orientált Programozás Öröklődés 2 Fájlkezelés

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

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

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

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

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

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

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

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

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

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

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

Globális operátor overloading

Globális operátor overloading Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal

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

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

Programozás C++ -ban

Programozás C++ -ban 8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási

Részletesebben

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)

Részletesebben

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások Osztálytervezés és implementációs ajánlások Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 04. 24. Osztálytervezés és implementációs kérdések OTERV / 1 Osztály tervezés Egy nyelv

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

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

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

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

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

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

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

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

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1 Gregorics Tibor Modularizált programok C++ nyelvi elemei 1 Függvények és paraméterátadás A függvény egy olyan programblokk, melynek végrehajtását a program bármelyik olyan helyéről lehet kezdeményezni

Részletesebben

Programozás C++ -ban

Programozás C++ -ban Programozás C++ -ban 6. Konstansok A C nyelvben konstansokat makróval is deklarálhatunk. Ebben az esetben mindenhol ahol a makró előfordul a fordító a definiált értéket behelyettesíti a makró helyére.

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

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

- 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

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

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

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

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

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

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

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

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

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

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

Alap számológép alkalmazás

Alap számológép alkalmazás Első Androidos programom - Egyszerű műveleteket használó számológép elkészítése Android Developer Tools (ADT) segítségével Alap számológép alkalmazás Android programfejlesztés Tompos Szabolcs Tartalom

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

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

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

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

Elemi Alkalmazások Fejlesztése II.

Elemi Alkalmazások Fejlesztése II. Elemi Alkalmazások Fejlesztése II. Osztályok közötti kapcsolatok öröklődés asszociáció aggregáció kompozíció 1. Feladat Készítsünk programot, amellyel testek térfogatát határozhatjuk meg, illetve megadhatjuk

Részletesebben

Programozási nyelv Java

Programozási nyelv Java Programozási nyelv Java 1. gyakorlat Félév tematikája Bevezetés, alapok Vezérlési szerkezetek Eljárások, függvények Csomagok Tömbök, adatbevitelek Osztályok, objektumok, Interfészek Öröklődés, absztrakt

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

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,

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

Access adatbázis elérése OLE DB-n keresztül

Access adatbázis elérése OLE DB-n keresztül Access adatbázis elérése OLE DB-n keresztül Készítsünk egy grafikus felülető alkalmazást, ami lehetıvé teszi egy Access adatbázisban tárolt hallgatói adatok (EHA, Név, e-mail cím) lekérdezését (összes

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

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek

Részletesebben

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

C programozás. 6 óra Függvények, függvényszerű makrók, globális és C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

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

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