Tillämpad programmering

Relevanta dokument
Tillämpad programmering

TDIU01 Programmering i C++

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

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00

Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

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

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

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

TDDC76 Programmering och datastrukturer

Omtentamen: Tillämpad Programmering (ID1218) :00-13:00

TDIU01 - Programmering i C++, grundkurs

Vad är en klass? Övning 2. Konstruktorer. ffl copy-konstruktorn tar en instans av klassen som. ffl default-konstruktorn tar inga argument och kan

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Tillämpad Programmering (ID1218) :00-13:00

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

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

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Classes och Interfaces, Objects och References, Initialization

OOP Objekt-orienterad programmering

Tentamen EDAF30 Programmering i C++

DD2387 Programsystemkonstruktion med C++ Tentamen 1 Tisdagen den 28 oktober 2014, 08:00-12:00

Övningar Dag 2 En första klass

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.

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

Tommy Färnqvist, IDA, Linköpings universitet

C++ Objektorientering - Klasser. Eric Elfving

Programsystemkonstruktion med C++

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv

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

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

Innehåll. Pekare Exempel

TDDC76 - Programmering och Datastrukturer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

TDDC76 - Programmering och Datastrukturer

DD2387 Programsystemkonstruktion med C++ Tentamen 2

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Programmering A. Johan Eliasson

TDDC76 - Programmering och Datastrukturer

Tillämpad Programmering (ID1218) :00-12:00

1. Klass med en dynamiskt allokerad variabel, definitionsfilen-del Klass med en dynamiskt allokerad variabel, inkluderingsfilen.

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

1 Klasser och objektorientering Vad är objektorientering?

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Innehåll. Pekare Exempel

TDIU01 - Programmering i C++, grundkurs

Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion

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

Grundläggande programmering med C# 7,5 högskolepoäng

Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29

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

Föreläsning 3: Booleans, if, switch

Programsystemkonstruktion med C++

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

Lösningsförslag övning 2.

Objektorienterad programmering Föreläsning 5

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Enkla variabler kontra referensvariabel

Det finns många flaggor till g++,

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

TDIU01 - Programmering i C++, grundkurs

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

Tentamen. Lösningsförslag

allokeras på stacken dynamiskt new delete

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Minneshantering. Minneshantering. Minneshantering. Undvik pekare

Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x

2D1387, Programsystemkonstruktion med C++ Johnny Bigert, Kursens hemsida:

TENTAMEN OOP

OOP Objekt-orienterad programmering

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

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

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Programmering för språkteknologer II, HT2011. Rum

1 Namnkontroll (NameControl)

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Dynamisk bindning och polymorfism

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

Objektsamlingar i Java

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen i DD2387 Programsystemkonstruktion med C++

TDDC76 - Programmering och Datastrukturer

DD2387 Programsystemkonstruktion med C++ Tentamen 3 Onsdagen 7 januari, 14:00-18:00

Transkript:

Tillämpad programmering C++ objekt Johan Montelius 1

struct struct Person { string name; int age; ; Person p; p.name = Joe ; p.age = 42; cout << p.name << endl; 2

Java class public class IntCell { public IntCell() { this( 0 ); public IntCell( int initial ) { stored = initial; public int getvalue( ) { return stored; public setvalue(int value) { stored = value; private int stored; 3

C++ class class IntCell { public IntCell(int initial = 0) { stored = initial; int getvalue( ) { return stored; void setvalue(int value) { stored = value; ; private int stored; 4

C++ class En klass i sig, är inte publik eller privat. Metoderna är privata om de inte föregås av public i en struct är allt publikt I Java kan en konstruktor anropa en annan, i C++ har man default-värden och flera konstruktorer som ger liknande funktionalitet. 5

Erlang -record(person, {name, age). P = #person{name = Joe, age=23, Name = P#person.name, Age = P#person.age, Q = P#person{age=25, 6

separat definition av metoder class IntCell { public IntCell(int initial = 0); int getvalue( ); void setvalue(int value); private int stored; ; IntCellIntCell(int value = 0) { stored = value; 7

intcell.h class IntCell { public IntCell(int initial); int getvalue( ); void setvalue(int value); ; private int stored; 8

intcell.cc IntCellIntCell(int value = 0) { stored = value; 9

constructor IntCellIntCell(int value = 0) { cout << IntCell << value << endl; stored = value; 10

main.cc include intcell.h int main() { IntCell n1; IntCell n2(10); IntCell n3 = 42; n2 = 37; cout << hmmm? << endl; ; 11

flera konstruktorer class Date { int day, month, year; public Date(int dd = 0, int mm = 0, int yy = 0) { day = dd; month = mm; year = yy; ; Date(int dd, string mm, int yy = 0) { ; ; 12

static class Date { int day, month, year; static Date default_date; public static Date set_def(int dd, int mm, int yy) { default_date = Date(dd, mm, yy); ; ; Date Datedefault_date = Date(1,1,1990); 13

initialisering class Date { int day, month, year; public Date(int dd, int mm, int yy) { day = dd; month = mm; year = yy; ; ; 14

initialisering class Date { int day, month, year; public Date(int dd, int mm, int yy) day(dd), month(mm), year(yy) { ; ; 15

initialisering Att föredra, oftast mest effektivt, undviker att sub-objekt först skapas för att sedan sedan skrivas över. Måste användas om sub-objekt inte har en parameterlös konstruktor. Kan inte alltid användas för mer komplexa initialiseringar. 16

const int main() { const int a = 3; cout << square(a) << endl; 17

const class IntCell { public IntCell(int initial = 0); int getvalue() const; void setvalue(int value); int square() const; ; private int stored; 18

const Viktig del i beskrivningen av en metod. accessor mutator Kompilatorn kan göra optimeringar men framför allt ett sätt att dokumentera Man kan modifiera ett const-deklarerat objekt (med hjälp av mutable) om det inte förändrar semantiken. 19

delete IntCell *a = new IntCell(42); heap 42 delete a; a stack 20

delete bool foo(int x) { bool res; IntCell *a = new IntCell(42); if (a->get_val() < x) res = true; else res = false; return res; 21

delete IntCell *foo(int x) { IntCell *a = new IntCell(42); delete a; return a; 22

delete void foo(int x) { IntCell *a = new IntCell(42); delete a; delete a; 23

Student class Student { IntCell *age; public Student(int a) { age = new IntCell(a); 24

Student class Student { Student *s = new Student(24); delete s; IntCell *age; public Student(int a) { age = new IntCell(a); 25

destructor class Student { IntCell *age; public Student(int a) { age = new IntCell(a); ~Student() { delete age; 26

Vem gör vad y x 27

the big three destructor anropas när ett objekt skall av-allokeras copy constuctor används när ett objekt initialiseras utgående från ett existerande objekt operator= används vid tilldelning i.e. x = y 28

call by value void foo(student s) { 24 Student joe(24); foo(joe) 29

call by value class Student { IntCell *age; public Student(const Student &s) { age = new IntCell(s.getAge()); 30

call by value class Student { IntCell *age; public Student(const Student &s) { age = new IntCell(s.getAge()); 31

call by value void foo(student s) { 27 24 Student joe(24); foo(joe) 32

operator= 27 Student joe(23); Studnet sue(24); joe = sue; 24 33

operator= const Student &operator=(const Student rhs) { delete age; age = rhs.age; return *this; joe = sue; 34

operator= const Student &operator=(const Student rhs) { if (this!= &rhs) { delete age; age = rhs.age; return *this; joe = sue = ellen; joe = (sue = ellen); = är höger-associativ returnerar ett modiferat sue 35

Minneshantering Ger möjlighet att skriva mycket effektiv kod. Mycket svårt att få rätt. 36