Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek."— Presentationens avskrift:

1 Föreläsning 1

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

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

4 Varför Objektorientering? En bra metod för att: hitta redan skriven kod och inte behöva uppfinna den på nytt analysera ett problem utgående från det verkliga systemets egenskaper kunna abstrahera problemet till olika detaljnivåer

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

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

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

8 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.

9 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

10 Klass En klass beskriver 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 Klasser kan relateras till andra klasser via: –association (känner till) –komposition (har) –generalisation (är)

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

12 Instans - Objekt Ett objekt behöver inte vara klar med att skapat sina samtliga dataattribut En instans är ett objekt där samtliga dataattribut är skapade (behöver i och för sig inte vara korrekta värden) –Trots denna skillnad kallas ofta instanser för objekt i C++

13 C++

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

15 OO i C++ (kap. 6) Objektorienteringen är det största tillägget i C++ Objekt (=instanser) 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)

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

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

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

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

20 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

21 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.

22 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; }

23 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

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

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

26 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

27 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; }

28 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

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

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

31 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!!!

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

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

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

35 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

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

37 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


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

Liknande presentationer


Google-annonser