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

Relevanta dokument
Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

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

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

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

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

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

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

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

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

Föreläsning 15: Repetition DVGA02

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Konstruktion av klasser med klasser

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

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

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

Klasshierarkier - repetition

OOP Objekt-orienterad programmering

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

OOP Tenta

OOP Objekt-orienterad programmering

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

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

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

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

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

Outline. Objektorienterad Programmering (TDDC77) Lösningen heter Collection. Collection gränsnittet. Collection. Iterable. Ahmed Rezine.

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 2. Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Föreläsning 6: Metoder och fält (arrays)

Imperativ programmering. Föreläsning 4

Föreläsning 4. Polymorfism. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Föreläsning 13 Innehåll

OOP Objekt-orienterad programmering

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TDDC77 Objektorienterad Programmering

kl Tentaupplägg

Arv. Objektorienterad och komponentbaserad programmering

TENTAMEN OOP

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Laboration 1 - Grunderna för OOP i Java

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

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

TENTAMEN OOP

TUTORIAL: KLASSER & OBJEKT

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

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

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Instuderingsuppgifter läsvecka 2

Objektorienterad Programmering (TDDC77)

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

OOP Objekt-orienterad programmering

OOP Tentamen

TDDC Terminologi Uppdaterad Fö #1

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

Transkript:

Outline Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vad händer under HT2 Laborationsserie del två I Klasser och objekt (classes and objects) I Inkapsling och arv (encapsulation and inheritance) I Åsidosättning och överlagring (overriding and overloading) I Abstrakta klasser och gränssnitt (abstract classes and interfaces) I Samlingar (collections), generics I Uppräkningar (enumerations) I Undantag (exceptions) lab 4: Två små uppgifter (kom igång) lab 5: Multiplikationstabell (arv versus inkapsling) lab 6: Dictionary (Samling, generics) lab 7: Menysystem (Objekthierarkier, abstrakta klasser)

Miniprojekt Datorbaserat tenta I Som avslutning genomförs ett miniprojekt. Det finns förslag på projekt på kurshemsidan I Det är tillåtet att komma med egna projektförslag, man får då skriva motsvarande projektbeskrivning själv. Denna ska godkännas av mig innan projektet börjar. I Ett individuellt datorbaserat prov med live rättning I Där ni ska lösa ett antal problem I Tentan är planerat för den 2015-01-10 kl 14-18. Tenta förberedelse Ett objekt I Programmera, Kör, förstå och prova på med alla exemplen som vi tar under föreläsningar, I Samma för labbarna och projektet I Prova lösa förra årets tentan: det blir samma svårighets grad Tillstånd Identitet Tjänster

Ett objekt Calculator class CalculatorDriver { public static void main ( String [] args ){ Calculator calc1 = new Calculator (); Calculator calc2 = new Calculator (); System.out. println (" calc1 +5 : " + calc1.add (5)); System.out. println (" calc2 +10: " + calc2.add (10)); Typ och referens System.out. println (" calc1 = " + calc1.add (0)); System.out. println (" calc2 = " + calc2.add (0)); Variabler Metoder class Calculator { private double result ; public Calculator (){ result = 0; public double add ( double a){ result = result + a; return result ; public double reset (){ result = 0; return result ; Ett objekt Outline (typ: Calculator) calc1, calc2 (result) 10 double add(double), void reset()

Åtkomst Åtkomst grundregel I I Java finns fyra åtkomstnivåer för variabler och funktioner I public : alltid synlig I protected: tas upp senare I default (package): tas upp senare I private: endast synlig inom klassen I i den här kursen håller vi oss till public och private I Deklarerar alla variabler som private I Deklarerar alla funktioner som public I Detta bettyder att om man vill kunna läsa/skriva en variabel från en annan klass så måste man göra funktioner som utför det. Detta kallas för getters och setters och eclipse kan generera den automatiskt I Det finns undantag, men dessa kommer ni att lära er att känna igen så småningom I Konstruktorer bör vara deklarerade som public Outline Abstrakt datatyp I Ibland vill man behandla data på ett sätt som inte riktigt stämmer med de primitiva datatyperna. I Man måste då kombinera ihop en ny datatyp som är anpassad för det man faktiskt vill göra med den I Ett exempel på detta är stacken som ni implementerade till lincalc I En abstrakt datatyp är ofta en kombination av variabler (tillstånd) och funktioner (tjänster)... I... det låter som att abstrakta datatyper och klasser har en del gemensamt

Öva - gör om stacken som en klass StringStack public class StringStack { private static int MAX = 100; private String [] data = new String [ MAX ]; private int pos = 0; I Skapa en klass StringStack som kan lagra 100 strängar I Strängarna ska lagras i en Array som det inte ska gå att ändra i så att stacken hamnar i ett otillåtet tillstånd I Ska klara operationerna push, pop och isempty public boolean isempty (){ return pos == 0; public void push ( String s){ data [ pos ++] = s; public String pop (){ return data [-- pos ]; Outline I = Unified Modeling Language I En enorm standard för att modellera precis allt I En liten del kallas för klass-diagram och beskriver hur klasser hänger ihop med varandra I Vi kommer i kursen att använda en mycket begränsad delmängd av dessa klass-diagram kallad Lättviktsdiagram

Lättviktsdiagram Klassen calculator I De som ska rätta era uppgifter behöver förstå era design och vill därför ha diagram som beskriver era klasser och relationerna dem emmellan I Ni behöver inte göra formellt korrekta -diagram result: double Calculator Calculcator() Calculcator(double) add(a: double): double add(a: double, b: double): double reset():void class Calculator { private double result ; public Calculator (){ result =0; public double add ( double a){ result += a; return result ; public void reset (){ result = 0; Klasser Outline I Klasser ritas som tredelade rutor I Översta rutan innehåller klassnamnet I Därefeter följer attribut (alltså variabler) I Understa rutan innehåller metoderna attribut1namn : attribut1typ attribut2namn : attribut2typ... KlassNamn metod1namn(param1namn: param1typ,...) : returtyp1...

Klassen calculator Signatur memory: double result: double Calculator Calculator() Calculator(mem: double) add(a: double): double add(a: double, b: double): double store():void load():void class Calculator { private double result ; public Calculator (){ result = 0; public Calculator ( double mem ){ result = mem ; public double add ( double a){ result += a; return result ; public double add ( double a, double b){ result = a + b; return result ; public void reset (){ result = 0; public static int parseint ( String s) throws NumberFormatException I En konkret metod deklareras med hjälp av sex komponenter I Accessmodifierare såsom public och protected I Returtyp eller void I Metodens namn (identifierare) som ska börja med liten bokstav I Parameterlista med noll eller fler datatyper och identifierare I Eventuella checked exceptions som metoden kastar I Metodens kropp inom måsvingar I Metodens signatur betäms av metodens namns samt datatyper och ordning på parameterlistan Överlagring Outline I En metod överlagrar en annan om den har samma namn (identifierare) men olika signatur I Returtyp spelar ingen roll för överlagring vilket innebär att två metoder med olika returtyp men samma signatur inte är tillåtet (kompilatorn kan inte skilja på dem).

public private variabler bryter mot inkapsling verkställer inkapsling metoder tjänster till andra klasser hjälpar egna metoder Personnummer Employee class Personnummer { private int year, month, day, birthnumber, controlnumber ; public Personnummer ( String str ){ year = Integer. parseint (str. substring (0,4)); month = Integer. parseint (str. substring (4,6));... public void set_year ( int _year ){ year = _year ; public void set_month ( int _month ){ month = _month ;... public int getyear (){ return year ; public int getmonth (){ return month ;... class Employee { private Personnummer personnummer ; public Personnummer getpersonnummer (){ return personnummer ; public void readdata () { Scanner in = new Scanner ( System. in ); System. out. println (" Personnummer?"); personnummer = new Personnummer ( in. nextline ());

Driver anställd class Driver { public static void main ( String [] args ){ Employee e = new Employee (); e. readdata (); System. out. println (" The employee was born on: " + e. getpersonnummer (). getyear () ); år månad dag personnummer Tjänster Tjänster... public private variabler bryter mot inkapsling verkställer inkapsling metoder tjänster till andra klasser hjälpar egna metoder

I Anta att klass A kapslar in klass B. Detta illustreras genom att ett streck ritas från A till B, samt att en ifylld romb ritas vid A, alltså den klass som kapslar in den andra. I Student inkapslar Studiemedelw name: String Student isregistred(semester:semester):boolean register(semester:semester):void getname(): String Studiemedel Outline I Är en relation class Student { private int points ; private Studiemedel studiemedel ; class ITare extends Student { private int pointsdatavetenskap ;

Protected eller getters och setters Superklass Subklass I Vill man komma åt instansvariabler i basklassen så fungerar inte det om de är deklarerade som private. I Lösning: deklarera som protected : som private men synlig i subklasser I Bättre lösning: använd getters och setters Att prata om arv I Subklasser ärver tillstånd och tjänster från superklasser I Ett sätt att dela på gemensam kod I En subklass utöker eller specialiserar sin superklass I En subklass är en subtyp till superklassens datatyp I En superklass kan ha flera subklasser I Antag att klass B ärver från klass A. Detta illustreras genom att en icke ifylld pil ritas från B till A name: String studiemedel: Studiemedel Student isregistered(semester:semester): boolean register(semester:semester):void getname(): String ITare Dare Uare

Polymorfism via name: String Animal Animal(_name: String) getname(): String says(): String Dog Dog(_name: String) Cat Cat(_name: String) Animal hunden = new Dog (" bobby "); Animal katten = new Cat (" kitty "); System.out. println ( hunden. getname () + " says " + hunden.says ()); System.out. println ( katten. getname () + " says " + katten.says ());