Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Relevanta dokument
TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Det finns många flaggor till g++,

TDDC76 - Programmering och Datastrukturer

TDIU20 - Objektorienterad programmering i c++ - föreläsning 4

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Klasser. Det är egentligen nu som kursen i programmeringsteknik börjar..., s k objektorienterad programmering.

TDDC76 - Programmering och Datastrukturer

TDIU01 - Programmering i C++, grundkurs

TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

TDIU01 Programmering i C++

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering

DD2387 Programsystemkonstruktion med C++ Tentamen 2

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Innehåll. Pekare Exempel

Programmering B med Visual C

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Innehåll. Pekare Exempel

Tentamen Objektorienterad Programutveckling med C++

Att använda pekare i. C-kod

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

grundläggande C++, funktioner m.m.

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

C++ - En introduktion

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

ÖREBRO UNIVERSITET. Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

TDIU01 (725G67) - Programmering i C++, grundkurs

1 Klasser och objektorientering Vad är objektorientering?

TDDC76 - Programmering och Datastrukturer

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Del6 Strömmar Ämnesområden denna föreläsning:

Tentamen i Objektorienterad Programmering 5p, Au, D, Fri, Pr,

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

Introduktion till arv

Introduktionslaboration

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDIU01 - Programmering i C++, grundkurs

1 Funktioner och procedurell abstraktion

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

*:85/ID200V C++ HT07. Föreläsning 8 Medlemspekare Undantagshantering Namnrymder

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Tentamen EDAF30 Programmering i C++

Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010

5 Arv och dynamisk bindning FIGUR

TDDI14 Objektorienterad programmering

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

TDDC76 - Programmering och Datastrukturer

TDDC76 Programmering och datastrukturer

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

Introduktionslaboration

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Övningar Dag 2 En första klass

Objektorienterad programmering

Generiska konstruktioner. Kursbokens kapitel 13

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )

Föreläsning 6: Metoder och fält (arrays)

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

Objektorienterad programmering i Java

C++ Objektorientering - Klasser. Eric Elfving

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Objektorienterad programmering. Grundläggande begrepp

1 Namnkontroll (NameControl)

Arv bakgrund (kap. 9)

Innehåll. 1 Typdeklarationer och typomvandling 2 Resurshantering. 3 Objektorientering, kort repetition. 4 Klasser

Java, klasser, objekt (Skansholm: Kapitel 2)

TUTORIAL: KLASSER & OBJEKT

Tentamen EDAF30 Programmering i C++


Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tentamen i DD2387 Programsystemkonstruktion med C++

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Objektorienterad programmering i Java I

TDDC76 - Programmering och Datastrukturer

Transkript:

Föreläsning 1

Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker)

Introduktion till OOP Grundtanke Gruppera ihop data till att representera objekt Gruppera ihop funktioner (operationer) tillsammans med de data som behandlas Objekt består av Dataattribut Operationer

Varför Objektorientering? Kodåteranvändning Strukturera design Naturligare upplägg av program

Objekt Objekt kan vara avbildningar av fysiska objekt i vår omvärld Exempelvis: Bord Kassett Kassettbandspelare Bankomat

Objekt forts. Objekt kan vara avbildningar av abstrakta objekt Exempelvis: Bankkonto Färg Position Storlek

Dataattribut Ett objekts tillstånd beskrivs m.h.a. dess dataattribut Dataattributen för ett bord kan t.ex. vara: Färg Antal ben Position i rummet Dataattributen kan i sig också vara objekt (t.ex. färg i detta fall)

Operationer Via ett objekts operationer kan man ändra eller undersöka dess dataattribut Operationerna för ett objekt bildar tillsammans ett gränssnitt (interface) till objektet.

Gränssnitt (interface) Ett gränssnitt beskriver vad som går att utföra med ett objekt Ett gränssnitt för ett bord kan tänkas se ut så här: GetColor GetNumLegs GetPosition SetPosition

Klass En klass är en beskrivning av hur ett objekt är uppbyggt Kan liknas vid en ritning; eller ett kakrecept Klassen definierar vilka dataattribut som ingår samt vilka operationer som kan utföras på ett objekt

Instans En instans är ett unikt och konkret objekt redo för användning Instansen skapas med en klass som mall En klass kan vara upphov till många instanser

C++

C++ kan allt som C kan + lite till Alla C-program kan kompileras i C++ Det finns många konstruktioner i C som är onödiga och som man bör undvika Indvik #define Undvik globala variabler Använd INTE goto!!!

OO i C++ (kap. 6) Objektorienteringen är det största tillägget i C++ Objekt skapas på samma sätt som variabler eller structar i C Lokalt (Lokala variabler) Dynamiskt (Minnesallokering) Globalt (Globala variabler. Undvik dessa i största möjliga utsträckning)

OO i C++ forts. I C++ brukar dataattribut kallas datamedlemmar Likaså benämns operationer som medlemsfunktioner (metoder i smalltalk)

Exempel (hello world) #include <iostream> using namespace std; // Glöm ej denna! void main() { cout << Hello world << endl; }

Namespaces (kap. 14.1) Namespaces används för att undvika namnkollisioner Dessa funktioner kthstart(); mdhstart(); Kan istället skrivas som kth::start(); mdh::start();

Namespaces forts. Krångligare? Kanske. using namespace mdh; ger kth::start(); Start();// Denna anropar mdh::start()

Standardbiblioteket (STL) STL = Standard Template Library C++ har ett standardbibliotek med många hjälpmedel för programmeraren, bl.a. cin, cout objekten Stränghantering Listor, vektorer, upslagning m.m. Kan framstå skräckinjagande, men ger mycket mervärde

Strängklassen (kap. 3.5) Stränghantering i C är väldigt jobbig malloc, strcpy, strcmp, char* m.m. I C++ kan man använda klassen string String sköter det mesta automatiskt, vilket underlättar programmeringen mycket.

Exempel (string) #include <iostream> #include <string> using namespace std; // Glöm ej denna! void main() { string str; cin >> str; cout << \ << str << \ << består av << str.length() << bokstäver. << endl; }

Filhantering Filer hanteras på liknande sätt som för utskrift och inläsning från tangentbord (cin & cout) Detta kallas Streams i C++. Filer, tangentbord, skärm m.m. behandlas på ett liknande sätt

Exempel (ofstream) #include <iostream> #include <fstream> using namespace std; // Glöm ej denna! void main() { ofstream file( c:\\temp\\test.txt ); file << Hello world << endl; }

Filhantering forts. Motsvarigheten för inläsning heter ifstream Observera likheten med cin och cout

Vektorer std::vector Bygger på templates (tas upp senare) Vektorer motsvarar arrayer, med utökning till att de allokerar minne automatiskt de kan växa vid behov de är effektiva för indexering av data

Exempel (vector) #include <iostream> #include <vector> using namespace std; void main() { vector<int> v; // int är templateargument v.push_back(5); v.push_back(10); } cout << v[0] << endl; cout << v[1] << endl;

Referenser (kap. 5.4.7) & istället för * Alternativ till pekare Referenser är säkrare En referens är alltid kopplad till ett objekt Undviker NULL-pekar-problemet Ger mer läsbar programkod Används oftast för parameteröverföring

Exempel (referenser) #include <string> using namespace std; // parametern name tas emot som en referens void write(string & name) { cout << name; } void main() { string name; name = Kalle ; write(name); }

Exempel 2 (referenser) void main() { int a = 5; int & b = a; b = 3; // innebär även att a = 3 }

Minnesallokering i C++ (kap. 5.4.5) Istället för malloc & free används new & delete Allokering av enstaka element sker utan [] int *i = new int[200]; delete [] i; // OBS! Glöm ej [] för arrayer!!!

Utökningar från C (syntaktiskt socker) Mindre tillägg i C++ som förenklar programmeringen och snyggar upp koden

Enradskommentarer Klassiska C-kommentarerna (Blockkommentarer) /* blockkommentar */ Nya C++-kommentarer (Enradskommentarer) // Enradskommentar

Standardvärden (kap. 4.7) C-funktionsanropet setname( Per, 0); C++-funktionsanropet setname( Per ); C++-deklarationen setname(char const* name, int index = 0)

Funktionsöverlagring Möjlighet att skapa flera funktioner med samma namn Villkor för att det skall fungera: Funktionerna får inte ha samma signatur (lika deklaration) Funktionerna måste ha olika typer på parametrarna Det hjälper inte med olika returtyper

Exempel (överlagring) I C++ kan du deklarera följande funktioner i samma fil void print(int i); void print(float f); void print(string str); Kompilatorn förstår vilken funktion som skall anropas, annars klagar den på tvetydighet (ambiguity)

Enkla råd Använd inte C-headers (string.h, iostream.h m.fl.). Dessa orsakar bara problem tillsammans med standardbiblioteket (STL) Använd <iostream>, <string> m.fl. istället