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,

Slides:



Advertisements
Liknande presentationer
Funktioner och programorganisation
Advertisements

Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
De fundamentala datatyperna
Föreläsning 1.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
i olika programmeringsspråk
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT C++ - förbättrat C?  Procedurellt program ser ut som C: sekvens, selektion, iteration  /* kommentar.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Ali Ghodsi Variabler En variabel är en sorts behållare som man kan placera data i Man måste ange typ och namn för alla variabler.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Programmering i C# 5. Structer.
Programmeringsteknik för Media1 & K1
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Arrayer och strängar Arrayer Strängar operatorer typkonvertering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Jonny Karlsson GRUNDKURS I PROGRAMMERING MED JAVA Föreläsning 9 ( ) INNEHÅLL: -Tabeller av klassobjekt -Användning av Java API specifikationen.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 6. Klassmallar Templates kan givetvis även användas för klasser –Standardutseende template // Klassdefinition (*.h) class C { returtyp metod(parametrar…);...
Objektorienterad Programmering i C++ I
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 2. Allmänt STL genererar varningar i Visual C++ –”#pragma warning (disable : 4786)”
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Funktionsmall template void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstanter float pi; const float pi = ; float *pip = π //Kompileringsfel! const float.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
Iteratorer och generiska algoritmer sid. 1 6/28/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Iterator vector ::iterator b = ivec.begin() vector ivec vector.
Överlagring av operatorer, friends, user-defined conversions, klassmallar sid. 1 6/29/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Överlagring av operatorer.
Objektbaserad programmering sid. 1 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Objektorienterad Programmering 8p TDP004 Klas Arvidsson
Detaljer i exception-hantering
Objektorienterad programmering forts
Presentationens avskrift:

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)

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)

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.

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

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

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

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

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!

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

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.

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

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

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;

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;

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

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?

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

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

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 !

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

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

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

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,

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

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)

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

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?

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