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

Magasszintű programozási nyelvek 1 BSc előadás

Hasonló előadás


Az előadások a következő témára: "Magasszintű programozási nyelvek 1 BSc előadás"— Előadás másolata:

1 Magasszintű programozási nyelvek 1 BSc előadás
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 Felhasználási engedély
Bátfai Norbert Debreceni Egyetem, Informatikai Kar, Információ Technológia Tanszék nbatfai gmail com> 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.

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

4 Kapcsoldó videók, videómagyarázatok és blogok
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
Másoló konstruktor, másoló értékadás Függvény, operátor túlterhelés Öröklődés, a Liskov-féle helyettesítési elv Virtuális függvények, polimorfizmus C és C++ összehasonlítása 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 A védendő C++ forrás ismerete:

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

8 Másoló konstruktor nbatfai@hallg:~$ g++ verem.cpp -o verem
./verem 1 512

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

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

11 Másoló konstruktor v.verem 0. 1. 2. 511. char char char ... char tár
u.verem

12 Sekély másolás v.verem 0. 1. 2. 511. char char char ... char tár
verem.verem

13 Mély másolás

14 Mély másolás nbatfai@hallg:~$ g++ verem4.cpp -o verem
./verem 3 2 1

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

16 std::stack nbatfai@hallg:~$ g++ verem5.cpp -o verem
./verem 2 1

17 Mély másolás nbatfai@hallg:~$ g++ verem6.cpp -o verem
./verem 2 1

18 Mély másolás nbatfai@hallg:~$ g++ verem7.cpp -o verem
./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 int a = 5; int &ar = a; int &arr = ar; ++arr; a=? ar
char tár arr

21 Másoló értékadás nbatfai@hallg:~$ g++ verem9.cpp -o verem
./verem u: 1 u: 0 v: 1 v: 0

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

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

24 this, *this

25 this, *this

26 this, *this verem 0. 1. 511. ‘2’ ‘3’ ... char tár verem=ujverem 0. 1.
‘0’ ‘1’ ... char tár

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

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 Öröklődés

36 Öröklődés

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, 1987. Liskov Substitution Principle (LSP)

38 Liskov féle helyettesítési elv
P S fgv(T t) 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. C C++ Dinamikus tárkezelés malloc/free new/delete

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

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

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

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

47 Labor Qt

48 Labor Qt

49 Qt API doksi

50 Qt API doksi http://doc.qt.nokia.com/4.7-snapshot/index.html
Akár magyarul is!

51 Rajzolás

52 Egér és billentyű események

53 Egér és billentyű események

54 Egér és billentyű események

55 Egér és billentyű események

56 Mandelbrot nagyítása

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

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

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

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 Laborkártyák Lefordul? Ha igen, mit ír ki? S miért?

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

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

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

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

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

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

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

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

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, 2001.

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: 47-79 (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


Letölteni ppt "Magasszintű programozási nyelvek 1 BSc előadás"

Hasonló előadás


Google Hirdetések