Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Vad är teknik?.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Klasser och objekt.
Funktioner och programorganisation
Programmeringsteknik
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
Objektorientering.
Föreläsning 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Arrays Indicerade variabler.
Föreläsning 4 Python: mera om funktioner och parametrar
Inkapsling.
Objektorienterad tänkande
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
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.
Föreläsning 5. Problemet Vi har sett att vi kan ersätta de metoder vi ärver från överklassen med egen funktionalitet (polymorfism) class Bil : public.
Föreläsning 4. Arv – bakgrund (kap. 9) Hund pälsfärg favoritben smutsa_ned() ät_katt() Katt pälsfärg smutsa_ned() klös_soffa() Kanin pälsfärg slaktvikt.
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Arv.
1. En infrastruktur för programutveckling
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
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.
Modulär programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
MV500B: Introduktion till interaktiv ljuddesign David Yanagisawa, Anders-Petter Andersson 4.5 högskolepoängLektion 3.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar 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…);...
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 4 Klasser Och Objekt.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
Föreläsning 2. Allmänt STL genererar varningar i Visual C++ –”#pragma warning (disable : 4786)”
1 Föreläsning 8 Mer om klasser och objektorientering.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Objekt, Klass och Instans Analys av systemet ger mer eller mindre detaljerade objekt Objekten sorteras och klass-diagram ritas upp där relationer reds.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Funktionsmall template void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Föreläsning 1 Introduktion till kursen. Algoritmer
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
Överlagring av operatorer, friends, user-defined conversions, klassmallar sid. 1 6/29/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Överlagring av operatorer.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Detaljer i exception-hantering
Objektorienterad programmering forts
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

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 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 #include 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 #include 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 #include using namespace std; void main() { vector v; // ”int” är templateargument v.push_back(5); v.push_back(10); cout << v[0] << endl; cout << v[1] << endl; }

Referenser (kap ) ”&” 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 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 ) 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, m.fl. istället