Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++

Slides:



Advertisements
Liknande presentationer
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Advertisements

Klasser och objekt.
Funktioner och programorganisation
OOP Objekt-orienterad programmering
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Föreläsning 1.
Metoder i java Det finns två typer av metoder i java
Föreläsning 4 Python: mera om funktioner och parametrar
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
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.
Stora additionstabellen
1 Föreläsning 6 Klass Object, instans av klass 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.
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 11 Arrayer.
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.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Programmering i C# 3. Klasser.
Repetition inför slutprovet
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT Lite OOA/OOD.
int res2=Math.max(tal1,tal2);
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
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
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.
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.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Riktade listor i C och Java Lösning till gruppövning 1.
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…);...
Föreläsning 10 Stränghantering.
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.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Sid 1 CD5250 Daniel Flemström MDH/IDT COM Extremely Rough Overview.
Sid period2CD5250 OOP med C++ Daniel Flemström MDH/IDT Abstrakta Containertyper Vilka finns fördefinierade? Vad kan dom? #pragma warning(disable:4786)
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Objektorienterad programmering
Föreläsning 2. Allmänt STL genererar varningar i Visual C++ –”#pragma warning (disable : 4786)”
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Undantag - eng. Exceptions Viktig del av klassbiblioteksdesign “Hoppa direkt ut med felkod” class.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Abstrakta Containertyper Vilka finns fördefinierade? Vad kan dom?
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
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.
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.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
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 5 Klasser och instanser
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
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,
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.
Detaljer i exception-hantering
Presentationens avskrift:

Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++

Sid 2 CD5250 OOP med C++ Daniel Flemström MDH/IDT Lektionsmål Efter avslutad föreläsning bör vi begripa hur man använder: Minnesallokering Defaulta värden på argument Funktionsöverlagring Mallar (Templates) Namespaces C++ Standardbibliotek och String och vector

Sid 3 CD5250 OOP med C++ Daniel Flemström MDH/IDT Kommentar och Scope  Kan allt som C kan, och mer därtill. C C++ /* Kommentar*/ #define BUFSIZE 12 { int a,b,c; a = b + c; } // Kommentar const int BUFSIZE=12; { int a,b,c; a = b + c; }

Sid 4 CD5250 OOP med C++ Daniel Flemström MDH/IDT Datatyper, true,false  Nya datatyper. C C++ #define TRUE –1 #define FALSE 0 struct kalle { int age; }; void SetAge(int val, struct kalle* s,) {s->age = val;} bool b = true; class kalle { int age; void SetAge(int val) {age = val;} };

Sid 5 CD5250 OOP med C++ Daniel Flemström MDH/IDT Minneshantering  C++ har en uppsnyggad minneshantering C C++ enstaka element arrayer new / delete new[] / delete[] int* i = new int[200]; delete[] i; malloc / free

Sid 6 CD5250 OOP med C++ Daniel Flemström MDH/IDT pArrayen Lite pekarrepetition int* pArrayen = new int[6]; *pArrayen pArrayen[1] &pArrayen

Sid 7 CD5250 OOP med C++ Daniel Flemström MDH/IDT Faror med pekare Om i något läge avallokering missas –“minnesläcka” Pekare till objekt(tex array) som inte finns längre Delete av samma objekt två ggr via olika pekare objA objB !

Sid 8 CD5250 OOP med C++ Daniel Flemström MDH/IDT Referenser  C++ har pekare men dessutom referenser C C++ void reset(int* a) { *a = 0; } void main () { int b = 12; reset(&b); } void reset(int& a) { a = 0; } void main () { int b = 12; reset(b); }

Sid 9 CD5250 OOP med C++ Daniel Flemström MDH/IDT Mer Om Referenser ”Som pekare men lättare att använda.” Används mest för parameteröverföring. int mittTal = 3; int &refTillMittTal = mittTal; /* jämför med nedan:*/ int *pTillMittTal = &mittTal; refTillMittTal = 4; // vad händer?

Sid 10 CD5250 OOP med C++ Daniel Flemström MDH/IDT 0x0FA 0x0FB 0x0FC 0x0FD Annat sätt att se referenser int a = 7; int& b = a; int* c = &a; int d = *c; // Men vad blir detta??? a,b = 7 C =0x0FA

Sid 11 CD5250 OOP med C++ Daniel Flemström MDH/IDT Overloading  C++ har funktionslagring (overloading) C C++ void printInt(int a); void printFloat(float a); void printString(char* a); void print(int a); void print(float a); void print(char* a);

Sid 12 CD5250 OOP med C++ Daniel Flemström MDH/IDT Overloading, exempel void move(int x, int y); void move(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?

Sid 13 CD5250 OOP med C++ Daniel Flemström MDH/IDT Default arguments  C++ kan ha defaulta värden på argument C C++ void print(int a, char sep); void main() { print (12,’b’); print (12); } void print(int a, char sep = ’b’); void main() { print (12,’b’); print (12); }

Sid 14 CD5250 OOP med C++ Daniel Flemström MDH/IDT Templates  C++ har templates (mallar med typkontroll) C C++ #define myRESET(a)\ a = 0 void main () { int o = 12; myRESET(o); float f = 12.3; myRESET(f); } template void myRESET(T& a) {a = 0;} void main () { int o = 12; myRESET (o); float f = 12.3; myRESET (f); }

Sid 15 CD5250 OOP med C++ Daniel Flemström MDH/IDT Inline  C++ har inline funktioner  C C++ #define MAX(a,b)\ ((a)>(b))?(a):(b) inline int MAX(int a, int b) { if (a > b) return a; else return b; }

Sid 16 CD5250 OOP med C++ Daniel Flemström 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

Sid 17 CD5250 OOP med C++ Daniel Flemström MDH/IDT Egna Namespaces För att skapa ett eget namespace att lägga klasser i använder man nyckelordet namespace –Standardutseende namespace jms { class Matrix { returtyp metod(parametrar…);... }; }

Sid 18 CD5250 OOP med C++ Daniel Flemström MDH/IDT Egna Namespaces 3 olika sätt att komma åt klassen Matrix –jms::Matrix matrix; Använder uttryckligen en klass i ett specifikt namespace –using namespace jms; Matrix matrix; Använder hela jms namespace (risk för kollisioner) –using jms::Matrix; Matrix matrix; Använder endast en delmängd av jms namespace (Matrix)

Sid 19 CD5250 OOP med C++ Daniel Flemström MDH/IDT iostream library #include using namespace std; void main () { int mittTal; cout << ”Gissa ett heltal” << endl; cin >> mittTal;... cerr << ”Nåt gick snett!” << endl;... }

Sid 20 CD5250 OOP med C++ Daniel Flemström MDH/IDT iostream library II #include using namespace std; void main () { string mittNamn; cout << ”Skriv ett namn” << endl; cin >> mittNamn;... }

Sid 21 CD5250 OOP med C++ Daniel Flemström MDH/IDT I/O mot filer #include using namespace std; void main () { ofstream outFile(”Kalle.TXT”); if (outFile) { outFile << ”text” << endl; } }// end main

Sid 22 CD5250 OOP med C++ Daniel Flemström MDH/IDT Enkel felhantering - assert() #include using namespace std; inline void checkRange(int index) { assert (index >= 0 && index < size); } #include using namespace std; inline void checkRange(int index) { assert (index >= 0 && index < size); } ouppfyllt villkor skrivs ut och programmet avlsutas omedelbart.