Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.