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

Relevanta dokument
Malmö högskola 2008/2009 CTS

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

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

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

TENTAMEN OOP

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

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

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

Malmö högskola 2007/2008 Teknik och samhälle

Laboration 1 - Grunderna för OOP i Java

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

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

Malmö högskola 2007/2008 Teknik och samhälle

Objektorienterad Programmering (TDDC77)

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

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

JAVA Mer om klasser och objektorientering

Tentamen. Lösningsförslag

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Klasshierarkier - repetition

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

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

TENTAMEN OOP

Lösningsförslag övning 2.

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

JAVAUTVECKLING LEKTION 11

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

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

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

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

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

Objektorienterad programmering Föreläsning 5

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

Objekt och klasser - Introduktion

Konstruktion av klasser med klasser

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

TENTAMEN OOP

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programmering (TDDC77)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

TUTORIAL: KLASSER & OBJEKT

TDDC77 Objektorienterad Programmering

Del A (obligatorisk för alla)

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

OOP Objekt-orienterad programmering

OOP Tenta

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

F4. programmeringsteknik och Matlab

Polymorfi. Objektorienterad och komponentbaserad programmering

Modeller, Objekt och Klasser

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

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

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

OOP Objekt-orienterad programmering

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

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

Föreläsning 8: Exempel och problemlösning

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Objektorienterad programmering i Java

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

Objektorienterad Programmering (TDDC77)

Föreläsning 13 Innehåll

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

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

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Tentamen OOP

Föreläsning 5-6 Innehåll

Objektorienterad programmering

DAT043 - Föreläsning 7

Objekt och referenser

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

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

Enkla variabler kontra referensvariabel

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

DD1342 Programkonstruktion för F1,

Objektorienterad Programmering DAT043

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Transkript:

och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering Beskriver hur något ska göras C orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog orienterad programmering Beskriver de saker som kan finnas Beskriver hur dessa saker ska agera Imperativ programmering Beskriver hur något ska göras C Viktiga begrepp Klass Instansvariabel Metod Klass Utgör en ritning som används för att skapa objekt Definierar hur objekt av den aktuella klassen ska bete sig Viss variation tillåts enligt ritningen Tidsangivelser n-gram Tillhör en klass Befinner sig i ett tillstånd Specificerar hur den skiljer sig från andra objekt inom samma klass Tidsangivelser (10:22:14) n-gram ( jag gillar kaffe ) 1

Instansvariabler Kallas även attribut Beskriver ett objekts status Det som gör att objektet kan skilja sig från andra objekt av samma klass. Tidsangivelser (timmar, minuter, sekunder) n-gram (en fältvariable av längd n med strängar) Metoder Beskriver beteendet hos objekten i en klass Låter objektet rapportera om eller manipulera sitt tillstånd Tidsangivelser (ställ in tid, ticka framåt) n-gram (hämta ord på plats k, skapa en strängrepresentation) UML (Unified Modeling Language) Klasser i Java Klass Tidsangivelse timmar : int minuter : int sekunder : int sätttid(t: int, m: int, s: int) ticka() ticka(sekunder: int) läsavtid() : String lektionstart : Tidsangivelse timmar = 10 minuter = 15 sekunder = 0 lektionslut : Tidsangivelse timmar = 12 minuter = 0 sekunder = 0 Deklareras med det reserverade ordet class Namnet ska börja med stor bokstav DetHärÄrEttBraKlassnamn Filen som klassen ligger i ska heta samma sak som klassen, och avslutas med.java DetHärÄrEttBraKlassnamn.java Klasser i Java i Java public class Tidsangivelse { // Instansvariabler private int timmar; private int minuter; private int sekunder; // Metoder public void sätttid(int t, int m, inte s) { // implementation public void ticka() { // implementation public void ticka(int sekunder) { // implementation public String läsavtid() { // implementation som avslutas med return <String>; return en sträng som representerar tidsangivelsen ; Skapas med det reserverade ordet new Variabler som pekar på objekt måste vara korrekt deklarerade Ett objekt har tillgång till de metoder som finns definierade i den klass det tillhör 2

i Java Metoder i Java public class TestaTidsangivelse { public static void main(string[] args) { Tidsangivelse lektionstart = new Tidsangivelse(); lektionstart.sätttid(10, 15, 0); System.out.print( Lektionen började: ); System.out.println(lektionStart.läsAvTid()); Tidsangivelse lektionslut = new Tidsangivelse(); lektionslut.sätttid(12, 0, 0); System.out.print( Lektionen ska sluta: ); System.out.println(lektionSlut.läsAvTid()); Beskriver vad man kan göra med ett objekt Har följande egenskaper Namn Argumentlista Resultattyp Synlighet Implementation Metoder i Java Metoder i Java public void ticka(int sekunder) { this.sekunder += sekunder public void ticka(int sekunder) { this.sekunder += sekunder Synlighet Resultattyp Namn Argumentlista Implementation public String läsavtid() { return timmar.tostring() + : + minuter.tostring() + : + sekunder.tostring(); public String läsavtid() { return timmar.tostring() + : + minuter.tostring() + : + sekunder.tostring(); Metoder: namn Börja med liten bokstav och kapitalisera vid ordgräns ettbrametodnamnkanseutsåhär ticka läsavtid Ge deskriptiva namn! Metoder: argumentlista En lista av deklarationer av variabler som ska finns tillgängliga för metoden Deklaration = <typ> <namn> Värden på variablerna ska skickas med när metoden anropas Exempel Metoden sätttid(int t, int m, int s) kan anropas med sätttid(10, 15, 0); 3

Metoder: resultattyp Deklarerar vad metoden resulterar i (vad det är för typ på det man får tillbaka) Metoden måste innehålla en return-sats med något av den deklarerade typen som argument Kan vara void Metoder som inte ger något resultat förändrar i regel objektets tillstånd Exempelvis ticka() som ökar på antalet sekunder som en tidsangivelse anger Metoder: synlighet Beskriver vilka andra objekt som kan se metoden Fyra olika synlighetsgrader private (package-private) Underförstått om inget annat specificeras protected public Vi kommer tillbaka till detta, men det är bra att ha sett de olika typerna Metoder: implementation Består av de programsatser som ska köras när metoden anropas Tillgängligt för användning: et och dess tillstånd (metoder och instansvariabler) Lokala variabler Deklareras i argumentlistan eller implementationen Kan ha samma namn som instansvariabler Instansvariabler kan alltid nås med hjälp av det reserverade ordet this. Exempelvis: this.sekunder += sekunder Metoder och variabler Lägg märke till likheten mellan deklarationer av variabler och metoder! <synlighet> <typ> <namn> private int timmar; public String läsavtid() Metoder kan ses som dynamiska variabler vars värde varierar beroende på vilka argument som anges samt objektets tillstånd Initialvärden på objekt? Variabler int timmar; timmar = 10; int timmar = 10; Tidsangivelse t = new Tidsangivelse(); t.sätttid(10, 15, 0);? Konstruktorer Tillåter att man ger ett antal argument vid konstruerandet av ett objekt, så att det börjar i ett visst tillstånd. Konstruktorer har klassnamnet som metodnamn och saknar resultattyp Om det inte finns någon konstruktor definierar java en standardkonstruktor som inte tar några argument, och inte gör någonting 4

Konstruktorer i Java Initialvärden på objekt! public class Tidsangivelse { // Instansvariabler int timmar; int minuter; int sekunder; // Konstruktorer public Tidsangivelse(int t, int m, int s) { timmar = t; minuter = m; sekunder = s; public Tidsangivelse() { this(0, 0, 0); // Metoder Variabler int timmar; timmar = 10; int timmar = 10; Tidsangivelse t = new Tidsangivelse(); t.sätttid(10, 15, 0); Tidsangivelse t = new Tidsangivelse(10, 15, 0); Finns något mer än objekt? Var/hur skapas det första objektet? Klasser kan ha variabler och metoder! Ni har redan använt dessa: public static void main(string[] args) Startas när man anropar en klass från prompten System.out.println( hej! ); Använder strömmen out i klassen System för att skriva ut en sträng följt av ett nyradstecken i terminalen. Klassvariabler/-metoder Existerar oberoende av objekt av klassen Deklareras med det reserverade ordet static Finns alltid tillgängliga Nås med hjälp av klassnamnet System.out.println(); Tidsangivelse.formatSträng Sammanfattning God programmering Klasser Klassvariabler Klassmetoder (Konstruktorer) Instansvariabler Metoder Lokala variabler Vad innebär det att skiva bra program? Olika i olika programmeringsparadigm Vad innebär det att skriva bra objektorienterade program? 5

Bra objektorienterad programmering Arv Inkapslat Dölj det som inte behöver synas (alla instansvariabler) Modulärt Lättare att använda saker som andra skrivit Lättförståligt Intuitiva variabel- och metodnamn Väldokumenterat All relevant information ska framgå av källkoden En klass kan vara en slags <annan klass> En pingvin är en sorts fågel Ett trigram är ett sorts n-gram Har man skrivit en metod för en klass kan man låta en ny klass ärva den! Gör med det reserverade ordet extends Abstrakta klasser Klasser som inte går att skapa objekt av Finns bara till för att ärvas ner Deklareras med det reserverade ordet abstract En klass som innehåller en eller flera abstrakta metoder måste vara abstrakt Djurexemplet public abstract class Djur { private String namn; protected void setnamn(string namn) { this.namn = namn; public Djur(String namn) { this.namn = namn; public Djur() { this.namn = "en/ett " + art(); public String art() { return "djur"; public abstract boolean kanflyga(); public abstract boolean köttätare(); public abstract boolean harnäbb(); public abstract boolean hardifferentieradtandrad(); public String tostring() { return namn + " (" + art() + ")"; Djurexemplet Djurexemplet public abstract class Däggdjur extends Djur { public String art() { return "däggdjur"; public boolean kanflyga() { return false; public boolean harnäbb() { return false; public boolean hardifferentieradtandrad() { return true; public abstract class Fågel extends Djur { public String art() { return "fågel"; public boolean kanflyga() { return true; public boolean köttätare() { return true; public boolean harnäbb() { return true; public boolean hardifferentieradtandrad() { return false; public class Varg extends Däggdjur { public String art() { return "varg"; public boolean köttätare() { return true; public class Får extends Däggdjur { public String art() { return "får"; public boolean köttätare() { return false; public class Mås extends Fågel { public String art() { return "mås"; public class Pingvin extends Fågel { public String art() { return "pingvin"; public boolean kanflyga() { return false; 6

Djurexemplet Djurexemplet: flygförmåga Djur Djur Däggdjur Fågel Däggdjur [ ] Fågel [+] Varg Får Mås Pingvin Varg Får Mås Pingvin [ ] Att fundera på till nästa gång Vad är ett n-gram? Vad kan man ha det till? Vad vill du kunna göra med ett n-gram? 7