Presentation laddar. Vänta.

Presentation laddar. Vänta.

C++ som ett bättre C Sid 1 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ kurs CD5250, vårterminen 2000 Lärare: Mats Medin,

Liknande presentationer


En presentation över ämnet: "C++ som ett bättre C Sid 1 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ kurs CD5250, vårterminen 2000 Lärare: Mats Medin,"— Presentationens avskrift:

1 C++ som ett bättre C Sid 1 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ kurs CD5250, vårterminen 2000 Lärare: Mats Medin, kv) Föreläsn tisd och torsd 17:15 - max 20:00 Lokal: V260 Labbar tisd eller torsd 19: :00 eller onsd 13: :00 Lokal: Lab9 (V423)

2 C++ som ett bättre C Sid 2 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Kursinformation –välj period 4 vt 2000 (mmi00/mmi004.html) Föreläsningar - läsanvisningar –Kopior av föreläsnings-OH finns att köpa Laborationer 7 st A - G Projektuppgift Förkunskapskrav: C-kurs (godkänd)

3 C++ som ett bättre C Sid 3 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Bonuspoäng till tentan 1/2 poäng per labb som är klar och redovisad enligt schema (avrundas nedåt till hela poäng) projektet klart och redovisat före tentan - 1 poäng Totalt kan man samla in 4 poäng. Tentamen har 40 poäng.

4 C++ som ett bättre C Sid 4 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Kurslitteratur C++ Primer, 3rd edition, av Stanley B. Lippman & Josée Lajoie –“Uppslagsbok” (Index!) –Föreläsningar utgående från den Andra böcker om C++: –C++ Direkt av Jan Skansholm –The C++ Programming Language, 3rd edition av Bjarne Stroustrup

5 C++ som ett bättre C Sid 5 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Översikt av kursen C++ historik C++ som bättre C - procedurell användning Objektbaserad programmering - klasser+objekt Objektorienterad programmering - klasser+objekt+arv

6 C++ som ett bättre C Sid 6 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Thomas Larssons OH 1-5

7 C++ som ett bättre C Sid 7 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ - förbättrat C?  Procedurellt program ser ut som C: sekvens, selektion, iteration  /* kommentar */ och // Kommentar  const int bufsiz = 512 (”inte #define”)  {Block}, block-scope, initiering  Deklarera före användning – i minsta möjliga scope

8 C++ som ett bättre C Sid 8 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Datatyper  (signed/unsigned) char short int long, float double - som i C  bool  klasser i C++ standard library (exempel!)  även fördefinierade klassmallar  klasser man definierar själv eller köper En klass är en datatyp!

9 C++ som ett bättre C Sid 9 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Operatorer, nyckelord + - * / % (remainder) = > && || ! = = -= etc. ? : sizeof, ::. -> [] () new delete & | ~ ^ > &= |= ^= Reserverade nyckelord se tabell i boken s.84

10 C++ som ett bättre C Sid 10 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Implicit typkonvertering  aritmetiskt uttryck innehållande olika typer: till den typ som är störst (har flest databitar)  tilldelning av uttryck av en typ till objekt av annan typ.  uttryck av en typ används som parameter till funktion vars formella parameter har annan typ.  funktions returvärde tilldelas uttryck av annan typ än den som definierats för det.

11 C++ som ett bättre C Sid 11 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Explicit typkonvertering variabel = static_cast (uttryck) På samma sätt: dynamic_cast const_cast reinterpret_cast Använd inte gamla skrivsättet: önskadtyp(uttryck) eller (önskadtyp)uttryck

12 C++ som ett bättre C Sid 12 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Namespaces namespace my_namespace { class dog { osv } } my_namespace::dog using namespace my_namespace; dog namespace my_ns my_namespace; diskontinuerligt nästade

13 C++ som ett bättre C Sid 13 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT iostream library #include int mittTal; cout << ”Gissa ett heltal” << endl; cin >> mittTal; cerr << ”Det var fel!” << endl;

14 C++ som ett bättre C Sid 14 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT I/O mot filer #include // iostream på köpet string filnamn; cout << ”Vilken fil ska öppnas?: ” << endl; cin >> filnamn; ifstream infile(filnamn); if (!infile) cerr << filnamn << ” gick inte att öppna ” << endl;

15 C++ som ett bättre C Sid 15 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klassen string // Smartare än char * ! #include string myString(“Vi testar string”); const string tomStr; if ( ! yourString.size()) if (yourString.empty()) if (myString == yourString) cin >> myString

16 C++ som ett bättre C Sid 16 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Referenser ”Som pekare men lättare att använda.” Används mest för parameteröverföring. int mittTal = 3; // lyckotal? int &refTillMittTal = mittTal; /* jfr */ int *pTillMittTal = &mittTal; refTillMittTal += 4; // vad händer? refTillMittTal = ettAnnatTal; // vad händer?

17 C++ som ett bättre C Sid 17 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT dynamisk minnesallokering pekare, new och delete int * heltalsP = new int(13); int *heltalsP2 = new int[10]; delete heltalsP; delete[] heltalsP2; int* p eller int *p??? void * p

18 C++ som ett bättre C Sid 18 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Mer pekare minTyp* pMinTyp = new minTyp[bufstorl]; pMinTyp++; pekare till funktion

19 C++ som ett bättre C Sid 19 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Faror med pekare Om i något läge avallokering missas –“minnesläcka” Pekare till objekt som inte finns längre Delete av samma objekt 2 ggr via olika pekare objA objB !

20 C++ som ett bättre C Sid 20 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT // Smartare än array #include vector minHeltalsVektor(100); // Nu använder vi en klassmall dinVektor = minVektor; if (dinVektor.empty()) while (cin >> word) minVektor.push_back(word);

21 C++ som ett bättre C Sid 21 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Funktioner i C++ Som i C men fler valmöjligheter beträffande parameteröverföringen: void move(int steps); // lokal kopia på stacken void send(char *buffer); void swap(int &v1, int &v2); bool isEqual(const int& v1, const int& v2); void send(char * buffer, protocol p = defaultProtocol); void send(char *buffer,...); // suspend typechecking

22 C++ som ett bättre C Sid 22 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Lurigt? int evaluate(HugeObj &hObj); myValue = evaluate(myHugeObj); int evaluate(HugeObj *hObj); myValue = evaluate(&myHugeObj);

23 C++ som ett bättre C Sid 23 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Överlagring av funktioner void print(int x); void print(float f); int add(int x, int y); float add(float x, float y); print(add(int1, int2)); print(add(float1, float2)); Jämför: printInt(addInt(int1, int2)); printFloat(addFloat ( float1, float2 )); printChar, printBool, printString,

24 C++ som ett bättre C Sid 24 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Lurigt? void move(graph& g, int x, int y); void move(graph& g, int angle, int length); typedef int angle; //Hjälper det? class Angle; // - “ - Det räcker inte att returvärdets typ eller parametrarnas namn skiljer Vad händer? scope

25 C++ som ett bättre C Sid 25 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT inline inline void move(graph& g, int x, int y) { /* kod som ska kommas åt snabbt */ } (inga fula makron här inte)

26 C++ som ett bättre C Sid 26 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Funktionsmallar template MyFirstType compute(MySecondType x) { MyFirstType y;... if (x...)...y =... return y; } float myStartValue = ; int result = compute(myStartValue ); // instantiering

27 C++ som ett bättre C Sid 27 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Lurigt Funkar mallen för alla typer som kan komma att användas med den? Kan typerna/värdena bestämmas då mallen används?

28 C++ som ett bättre C Sid 28 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT Labbmiljön Inloggning Lösenord Borland Turbo C++


Ladda ner ppt "C++ som ett bättre C Sid 1 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ kurs CD5250, vårterminen 2000 Lärare: Mats Medin,"

Liknande presentationer


Google-annonser