Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Prog1, C++ tárgyalás Magasszintű programozási nyelvek 1 BSc előadás Dr. Bátfai Norbert egyetemi adjunktus Debreceni.

Hasonló előadás


Az előadások a következő témára: "Prog1, C++ tárgyalás Magasszintű programozási nyelvek 1 BSc előadás Dr. Bátfai Norbert egyetemi adjunktus Debreceni."— Előadás másolata:

1 Prog1, C++ tárgyalás Magasszintű programozási nyelvek 1 BSc előadás Dr. Bátfai Norbert egyetemi adjunktus Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék Skype: batfai.norbert Prog1_6.ppt, v.: 0.0.9, Az óra blogja: A Nokia Ovi store-ban is elérhető:

2 Bátfai Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék Copyright © 2011, 2012 Bátfai Norbert E közlemény felhatalmazást ad önnek jelen dokumentum sokszorosítására, terjesztésére és/vagy módosítására a Szabad Szoftver Alapítvány által kiadott GNU Szabad Dokumentációs Licenc 1.2-es, vagy bármely azt követő verziójának feltételei alapján. Nem változtatható szakaszok: A szerzőről. Címlap szövegek: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra. Hátlap szövegek: GNU Jávácska, belépés a gépek mesés birodalmába. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being: A szerzőről, with the Front- Cover Texts being: Programozó Páternoszter, Bátfai Norbert, Gép melletti fogyasztásra, and with the Back-Cover Texts being: GNU Jávácska, belépés a gépek mesés birodalmába. Felhasználási engedély

3 Célok és tartalom Előadás a)Osztályok, objektumok b)Másoló konstruktor, - értékadás, baráti, beágyazott osztályok c)Öröklődés, a Liskov-féle helyettesítési elv d)Virtuális függvények e)C és C++ összehasonlítás Labor a)Qt-s példák b)Visszatekintés: hálózati állatorvosi és a deriváló ló, a BB(2) megoldása Laborkártyák a)Példás kártyák Otthoni opcionális feladat a)A japán világbajnok HELIOS csapat szoftvereinek otthoni tanulmányozása.

4 Kapcsoldó videók, videómagyarázatok és blogok _hegyvolgyedet_bejarja vbol bol_2 Az írásbeli és a szóbeli vizsgán bármi (jegyzet, könyv, forráskód, számítógép mobiltelefon stb.) használható! (Az írásbeli vizsgán beszélni viszont tilos.) Hiszen az én feladatom az lesz, hogy eldöntsem, jól felkészült programozóval, vagy mennyire felkészült programozóval állok szemben.

5 Minimális gyakorlati cél A hallgató tudja módosítani a bevezető Qt példákat: svn co svn://hallg.inf.unideb.hu:2005/bevezetes (az elsoQt/{Frak|Sejtauto|GenAblak|masodikQt/{Frak…}…}) Illetve az LZW fás példákat (legalább z1.cpp, z3.cpp, z6.cpp) (elsoC++/ziv) Az svn tároló elérése kapcsán:

6 Minimális elméleti cél 1)Másoló konstruktor, másoló értékadás 2)Függvény, operátor túlterhelés 3)Öröklődés, a Liskov-féle helyettesítési elv 4)Virtuális függvények, polimorfizmus 5)C és C++ összehasonlítása 6)Dinamikus tárkezelés áttekintése: a malloc()-tól a new-ig (a többdimenziós példákon át is), példát mutatva a memória szivárgásra 7)A védendő C++ forrás ismerete: ent_tiszta_szivbol_4 ent_tiszta_szivbol_4

7 Visszatekintés: példányosítás Osztaly peldany; peldany.metodus(); (példány a veremben) (példány a halmon) Osztaly *peldany; peldany = new Osztaly(); peldany->metodus(); // (*peldany).metodus(); delete peldany;

8 Másoló konstruktor g++ verem.cpp -o verem

9 Másoló konstruktor // Verem u(v);

10 Másoló konstruktor morpheus]$ g++ verem1.cpp -o verem morpheus]$./verem Szegmens hiba g++ verem1.cpp -o verem *** glibc detected ***./verem: double free or corruption (top): 0x *** ======= Backtrace: ========= /lib/libc.so.6[0x7f20feb20928]

11 Másoló konstruktor tár char v.verem u.verem

12 Sekély másolás tár char v.verem verem.verem

13 Mély másolás

14 g++ verem4.cpp -o verem

15 Mély másolás tár ‘0’‘1’char v.verem tár ‘0’‘1’‘2’char verem.verem ‘3’

16 std::stack g++ verem5.cpp -o verem

17 Mély másolás g++ verem6.cpp -o verem 2 1

18 Mély másolás g++ verem7.cpp -o verem 3 2

19 Ismétlés: laborkártya Lefordul? Ha igen, mennyit ír ki? morpheus]$ g++ r.c -o r morpheus]$./r a=9 int a = 5; int &ar = a; int &arr = ar; ++arr; a=? sekély másolás

20 Sekély másolás tár char ar arr int a = 5; int &ar = a; int &arr = ar; ++arr; a=? int a

21 Másoló értékadás g++ verem9.cpp -o verem u: 1 u: 0 v: 1 v: 0

22 ... tár ‘2’‘3’char u.verem tár ‘0’‘1’char v.verem Másoló értékadás tár ‘0’‘1’char

23 A másoló értékadás (és másoló konstruktor) letiltása

24 this, *this

25

26 ... tár ‘2’‘3’char verem=ujverem tár ‘0’‘1’char verem

27 this, *this... tár ‘2’‘3’char verem=ujverem tár ‘0’‘1’char verem &v Verem* vp = &v; &v this, tagfüggvényen belül

28 OO, UML

29 OMG UML: vizuális modellező nyelv UML (OMG Unified Modeling Language) OO elvű modellezés (Felépítés és működés modellezésére) pl. használati esetek (működés)

30 Osztálydiagram

31 Asszociációk, aggregáció és kompozíció

32 Modellezés „Valóság” Modell

33

34 Öröklődés

35

36

37 Liskov féle helyettesítési elv Barbara Liskov: Aata Abstraction and Hierarchy, OOPSLA '87 Addendum to the proceedings on Object-oriented programming systems, languages and applications (Addendum) ACM New York, NY, USA, Liskov Substitution Principle (LSP)

38 Liskov féle helyettesítési elv T P fgv(T t) S T t fgv(t) S s fgv(s)

39 Polimorfizmus

40 K:Param 42 K:Szulo 0x7fff1600ed30 Szulo::tulterhelt Szulo::tulterhelt K:Param 42 K:Szulo 0x7fff1600ed10 K:Param2 42 K:Gyermek 0x7fff1600ed10 Gyermek::tulterhelt Szulo::tulterhelt K:Param 42 K:Szulo 0x152d030 K:Param2 42 K:Gyermek 0x152d030 Szulo::tulterhelt Szulo::tulterhelt D:Szulo D:Param D:Gyermek D:Param2 D:Szulo D:Param D:Szulo D:Param K:Param 42 K:Szulo 0x7fff40f38fb8 Szulo::tulterhelt Szulo::tulterhelt K:Param 42 K:Szulo 0x7fff40f38f88 K:Param2 42 K:Gyermek 0x7fff40f38f88 Gyermek::tulterhelt Gyermek::tulterhelt K:Param 42 K:Szulo 0x1c7b038 K:Param2 42 K:Gyermek 0x1c7b038 Gyermek::tulterhelt Gyermek::tulterhelt D:Szulo D:Param D:Gyermek D:Param2 D:Szulo D:Param D:Szulo D:Param

41 Virtuális függvények

42 C és C++ összehasonlítása Már szert tettünk annyi tapasztalatra, hogy megtegyük az első összehasonlításokat. Dinamikus tárkezelés CC++ malloc/free new/delete

43 tár char* tár char **dinamikus_tomb char* tár char &dinamikus_tomb[1] dinamikus_tomb+1 dinamikus_tomb[1][1] *(dinamikus_tomb[1]+1) *(*(dinamikus_tomb+1)+1) dinamikus_tomb[1] *(dinamikus_tomb+1) dinamikus_tomb[1]+1 *(dinamikus_tomb+1)+1 C Ismétlés (2. ea.): Mutatók és többdimenziós tömbök

44 C++ Ismétlés (5. ea.): a Conway-féle életjátékunkból Dinamikus memóriakezelés (malloc()-os ismétlő ábra) tár bool* bool ** bool* tár bool tár bool ***racsok bool ** racsok[0] bool* magassag szelesseg-1 racsok[0][1]

45 C és C++ összehasonlítása Már szert tettünk annyi tapasztalatra, hogy megtegyük az első összehasonlításokat. Típusok CC++ referencia Paraméterátadás referencia szerint

46 * const * Már szert tettünk annyi tapasztalatra, hogy megtegyük az első összehasonlításokat. tár double * dp double double d = 2.71 double * const dp = &d; *dp = -*dp; X tár double * dp double double d = 2.71 const double * dp = &d; *dp = -*dp; X*dp X T100: const double * const dp = &d;

47 Labor Qt m_hegyvolgyedet_bejarja

48 Labor Qt m_hegyvolgyedet_bejarja

49 Qt API doksi

50 Qt API doksi Akár magyarul is! ngarian

51 Rajzolás

52 Egér és billentyű események

53

54

55

56 Mandelbrot nagyítása

57 Labor Visszatekintés: a hálózati ló

58 Labor Visszatekintés: a hálózati ló 1 0

59 Labor Visszatekintés: a hálózati ló, DOS i=0 i=1 fork() kliens()

60 BB Részletek: 1.,2. előadás és

61 BB Részletek: 1.,2. előadás és

62 BB Részletek: 1.,2. előadás és

63 BB Részletek: 1.,2. előadás és

64 BB Részletek: 1.,2. előadás és

65 BB Részletek: 1.,2. előadás és

66 Lefordul? Ha igen, mit ír ki? S miért? Laborkártyák

67 Lefordul? Ha igen, mit ír ki? Laborkártyák Lefordul?

68 Laborkártyák Lefordul, ha a jobb oldal is tagja a saját vermünknek?

69 Lefordul? Ha igen, mit ír ki? Laborkártyák Lefordul? Ha igen, mit ír ki? Mi a különbség?

70 Mit mondanál erről a kódról? Laborkártyák Mi a különbség? Mit mondanál erről a kódról?

71 Milyen a librcsc és az agent2D licence? Laborkártyák main_player.cpp

72 Mi itt a helyzet a másoló konstruktorral és az értékadó operátorral (másoló értékadással)? Laborkártyák soccer_agent.h

73 Mit ír ki? (Ha lefordul.) Laborkártyák

74 Mi lesz a gyümölcskosárban? Ismétlő laborkártyák

75 Otthoni opcionális feladat A robotfoci japán szoftvereinek (librcsc, agent2d) tanulmányozása a KDevelop- ban.

76 Otthoni opcionális feladat A robotfoci japán szoftvereinek (librcsc, agent2d) tanulmányozása a KDevelop- ban.

77 Kötelező olvasmány (B&L könyv) Benedek Zoltán, Levendovszky Tihamér: Szoftverfejlesztés C++ nyelven, Budapest, 2007, Szak K (két hét múlvára) (S könyv) Stroustrup, Bjarne: A C++ programozási nyelv, Kiskapu, g&recnum=255516&pos=

78 Ajánlott olvasmány (OSS könyv) Alan Ezust, Paul Ezust: An Introduction to Design Patterns in C++ with Qt 4, Prentice Hall (Open Source Series) 2006 Pdf-ben: zust_book.pdf zust_book.pdf (Hasonlóan hozzánk, itt is UML-el támogatott a tárgyalás.) (24 könyv) Jesse Liberty, Horvath, David B. Büki András: Tanuljuk meg a C++ programozási nyelvet 24 óra alatt g&recnum=469876&pos=


Letölteni ppt "Prog1, C++ tárgyalás Magasszintű programozási nyelvek 1 BSc előadás Dr. Bátfai Norbert egyetemi adjunktus Debreceni."

Hasonló előadás


Google Hirdetések