Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar



Relevanta dokument
F2: Krav på objektorienterat språk

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

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

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

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

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Klasshierarkier - repetition

Objektorientering Klasser

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

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

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

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

Imperativ programmering. Föreläsning 4

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Arv. Objektorienterad och komponentbaserad programmering

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

OOP Objekt-orienterad programmering

Objektorienterad analys och design

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

DAT043 - Föreläsning 7

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

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

Introduktion. Byggstenar TDBA

Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

TDDC76 - Programmering och Datastrukturer

Dynamisk bindning och polymorfism

Introduktion till arv

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Laboration 1 - Grunderna för OOP i Java

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

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Objektorientering. Grunderna i OO

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Föreläsning 13 Innehåll

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

Objektorienterad programmering. Grundläggande begrepp

Konstruktion av klasser med klasser

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

Objektorienterad analys och design

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

1 Egna klasser. 1.1 En punkt-klass

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC76 Programmering och datastrukturer

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Objektorienterad Programmering (TDDC77)

Föreläsning 15: Repetition DVGA02

Synlighet. Namespace Scope-operatorn Klasser Vänner

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Enkla variabler kontra referensvariabel

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Instuderingsuppgifter läsvecka 2

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Transkript:

Klassbegreppet och C++ OOP UML Klasser och objekt i C++ Uppdelning i filer Attribut och metoder Inkappsling - åtkomst Klassattribut - objektattribut Objekt-orienterad programmering Att använda ett objektorienterat språk för att implementera en OO-design. Stöd för: Inkapsling Arv Dynamisk bindning 67 68 UML Unified Modeling Language Tree amigos Grady Booch James Rumbaug Ivar Jacobson Gav upp sina egna metoder för att uppnå standardisering UMLs fördelar Används i väldigt stor utsträckning inom industrin Brett användningsområde (inkl RT) Väletablerad, beprövad teknik Väldokumenterat Fritt (ej företagsägt) 69 70 1

Användbara modeller är Riktiga (accurate) Beskriver systemet korrekt Konsekventa (consistent) Inga konflikter Enkla att förmedla till andra Enkla att ändra Förståeliga Så enkla som möjligt men inte enklare De största problemen med dagens mjukvaruutveckling Många projekt börjar programmera för tidigt Lägger ner för mycket energi på kodningen Ledningen saknar förståelse för mjukvaruutveckling Programmerare känner sig säkrare när de programmerar än när de bygger abstrakta modeller 71 72 Målen med UML Modellera system (inte bara mjukvaran) Koppla ihop koncept Hantera skalning Skapa ett språk som kan användas av både människor och datorer Översikt Vyer visar systemet utifrån olika aspekter Diagram grafer som beskriver innehållet i en vy Modellelement representerar OO koncept såsom klasser, metoder och relationer Generella mekanismer för kommentarer etc 73 74 2

Vyer Diagram - Användningsfall Användningsfall (use-cases) Systemets funktionalitet som den uppleva av en extern användare (actor) Logisk Funktionaliteten inuti; statiska strukturen, dynamiska beteendet Komponent Parallellitet Spridning, Gruppering (deployment) Kund Öppna konto Ta ut pengar Bankman 75 76 Klassdiagram Objektdiagram Konto saldo : int Arv SparKonto Konto Mitt:Konto uttag() Lönekonto kontonr:int kontonr=1234 Aggregat Namn saldo:float saldo=123.50 Bankomat angekod() angebelopp() Association Kund Adress sättin(float) 77 78 3

Tillståndsdiagram Sekvensdiagram Stilla framme Går upp : Kund : Bankomat : Konto angekod( ) Går ner angebelopp() uttag( ) 79 80 Klasser och objekt i C++ Klasser deklareras i en typdeklaration, precis som structs i C Ett eller flera objekt skapas med klassen som mall Det finns två sätt att skapa objekt: På heapen (med new) Som lokala (automatiska) variabler En klass - två filer Ett bra sätt att dela upp sitt system Många filer blir det - bra att ha någon struktur på filsystemet Varje klass har två filer Headerfil (.h) med deklarationer (interfacet) Klassfilen (.cpp) med definitionen (implementationen) Det går att slå ihop dem, men det försvårar användningen av klassen, och minskar inkapslingen 81 82 4

Exempel Headerfil (Interface) Bara deklarationer av metoder och (tyvärr) attribut class Konto void sattin(int kr); //metod int saldo; //attribut ; Forts. Klassfil (Implementation) Definitioner av metoder void Konto::sattIn(int kr) saldo=saldo + kr; 83 84 Kombinerat interface/implementation Kan användas för enstaka klasser, inget att rekommendera class Konto void sattin(int kr) //metod saldo=saldo + kr; int saldo; //attribut 85 Flera klasser Endast.h-filerna behöver synas #include Passagerare.h #include Bil.h Bil::gasa() Bil::bromsa() Problem vid korsvis beroende #include Passagerare.h #include Bil.h Passagerare::metod1() Passagerare::metod2() 86 5

#include Passagerare.h class Bil Passagerare *pass; ; Korsvis användning Två headerfiler som refererar till varandras klassdeklarationer: #include Bil.h class Passagerare Bil *minbil; ; class Bil; //Def kommer class Pasagerare Bil *minbil; 87 Åtkomstnivåer Tre nivåer av inkapsling public - åtkomst för alla protected - Åtkomst för subklasser private - Åtkomst endast inom klassen class Bil void gasa(); protected: int hastighet; int modell; ; 88 Åtkomst forts. Klassattribut Både attribut och metoder kan ha alla nivåer En nivå (ex private) gäller tills nästa anges Default är private Attribut bör vara private Använd åtkomstmetoder för att inte bryta inkapslingen Metoder som endast använd inom klassen bör vara private, eller protected om det kan tänkas att subklasser kan komma att omdefiniera dem (svårt val ibland) Vanliga attribut hör till ett objekt, dvs flera objekt -> flera uppsättningar attribut med olika värden Klassattribut är gemensamma för alla objekt av en klass - hör till klassen Nyckelordet static anger klassattribut/metod Klassmetoder kan bara modifiera klassattribut (vilket värde avses annars?) 89 90 6

Exempel Räknare för antalet skapade objekt class Bil Bil() antal++; int getantal() return antal; static int antal; ; 91 7