Repetition av objektorientering

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Klasser och objekt.
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Metoder i java Det finns två typer av metoder i java
Arv.
Abstract & sealed.
Inkapsling.
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Att programmera i språket Java
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
Programmering i C# 3. Klasser.
Klasser och objekt Klasser, objekt och instansvariabler
Datasamlingar och generiska enheter
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.
Polymorfism.
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Programmeringsteknik för Media1 & K1
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Objektorienterad programmering i Java
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
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
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Repetition av objektorientering ITK:P2 F4 Repetition av objektorientering DSV Peter Mozelius

Objektorientering Världar uppbyggda av objekt Ett sätt att modularisera våra system och program Objekten delas in i klasser Klasserna kan ärva varandra En klass blir en utökning eller specialisering av en annan Klasser bildar en taxonomi

Objektorientering Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objektorientering En klass innehåller en specifikation som definierar beteenden och egenskaper hos de klassinstanser (objekt) som man sedan skapar (instansierar) av klassen. Av en klass Tax kan man sedan skapa en mängd olika taxar. I Java görs detta enligt: Tax t1 = new Tax();

Objektorientering

Objektorientering i Java En enkel klass med en konstruktor: public class Katt { private String namn; public Katt(String s){ namn = s; }//konstruktor }//klassen Katt

Objektorientering i Java I en annan klass kan vi sedan instansiera kattobjekt: public class KattProgram { public static void main(String[] arg){ Katt k1 = new Katt(”Jameson”); Katt k2 = new Katt(”Schrödinger”); }//main }//KattProgram

Klassarv En basklass håller reda på gemensamma saker och kodupprepning undviks En subklass innehåller de specifika delar som innebär en utökning av basklassen I Java anges arv genom det reserverade ordet extends public class Cykel extends Fordon

Klassarv

Inkapsling och datagömning Inkapsling = Encapsulation Datagömning = Information hiding Data kapslas in och göms för andra klasser Data nås genom publika åtkomstmetoder private int x; public int getX(){ return x; }

Inkapsling och datagömning På samma sätt bygger man även metoder som kan ändra värdet på instansvariabler: private int x; public void setX(int i){ x = i; } Accessmetoder/Åtkomstmetoder

Interface Ett interface innehåller bara abstrakta metoder (och eventuella konstanter) Ett interface ärvs inte utan det implementeras public class TV implements Fjärrkontroll I interfacet Fjärrkontroll finns metoder deklarerade som sedan måste implementeras i klassen TV, t ex public void bytKanal(int kanal)

Aggregat och association När en klass är en del av en annan klass Association När två eller flera klasser har en inbördes relation och behov av kontakt med varandra

Aggregat och association I ett datorsystem finns användare och filer Olika användare har olika behörighet till olika filer i datorsystemet Vad har ni för förslag till objektmodell där vi även markerar aggregat och association? Vilka substantiv bör bli objekt och klasser?

Aggregat och association ArgoUML är: Freeware Open Source Lätt att hämta hem

ArgoUML Hämtas från http://argouml.tigris.org/

ArgoUML i Uppgift A INNAN du börjar skriva kod för Uppgift A: http://dsv.su.se/~mozelius/ITKP2/examination/UppgiftA/uppgiftA.htm Så gör du uppgiftens Del I som består i att rita upp den klasshierarki som sedan ska implementeras i javakod

Gruppövning Vi tar nu en arbetspaus på 30 min där ni i grupper på 5 – 6 personer förutom att dricka kaffe även ska göra en modellering av en liten klasshierarki. Ni ska även lägga in lämpliga attribut och åtkomstmetoder för den lösning som efterfrågas på nästa bild

Gruppövning Ett antal 3D-volymer ska lagras i en array och sedan plockas ut och volymberäknas. Så att samtliga ärvande klasser verkligen får en egendefinierad metod för volymberäkning ska den abstrakta basklassen ITKVolym ha en: public abstract double visaVolym(); Specialiseringar av basklassen ska sedan ske till klasserna Kub, Klot och Cylinder. Metoden visaVolym() ska överskuggas med passande formel för volymberäkning i de ärvande klasserna. Detta för att samtliga klasser ska veta hur de ska visa sin volym enligt principen för dynamisk bindning. VOLYMEN FÖR EN RAK CIRKULÄR CYLINDER = Π * h * r *r Alla klasser ska ha två konstruktorer. En som enbart tar de parametrar som är nödvändiga för själva volymberäkningen samt en ytterligare som även tar emot ett värde för färgen på 3D-volymen. Samtliga attribut ska deklareras som private och kompletteras med åtkomstmetoder. De av klassernas konstruktorer som saknar inparametrar för färgangivelse ska sätta klassens attribut till standardfärgen "grå".

Redovisning av gruppövning Två grupper kommer fram och visar upp sina lösningsförslag Om ni hänger med här och förstår principen så kommer ni inte ha några problem med att få till en fungerande lösning för Uppgift A

Några reserverade ord i Java Reserverade ord som är bra att känna till: this syftar på den egna klassen super syftar på basklassen abstract förhindrar instansiering final förhindrar vidare arv static markerar klasstillhörighet inte instanstillhörighet

Polymorfism polymorfism = många kroppar I en klasshierarki kan det i de olika klasserna finnas metoder med samma namn och samma signatur MEN med olika metodkroppar Objektorienterade programmeringsspråk har inbyggda mekanismer för dynamisk bindning Rätt metod körs automatiskt när programmet exekveras

Polymorfism I en abstrakt basklass: public abstract class Figur Finns det en abstrakt metod: public abstract double visaArea(); I den ärvande klassen Rektangel: public class Rektangel extends Figur har metoden implementerats så att den passar för att räkna ut arean hos just en rektangel

Polymorfism Medan den i klassen Cirkel överskuggas enligt: public double visaArea() { return bredd * höjd; }//visaArea i klassen Rektangel Medan den i klassen Cirkel överskuggas enligt: return PI * radie * radie; }//visaArea i klassen Cirkel

Bara repetition? Två stora delar av ITKP2: Datasamlingar (vi fördjupar oss) Trådning (nytt för alla?) En trådsäker kö: LinkedBlockingQueue public LinkedBlockingQueue() public LinkedBlockingQueue(int capacity) public LinkedBlockingQueue(Collection c)

LinkedBlockingQueue import java.util.concurrent.*; Implementerar följande interface Queue <E> Iterable<E> Collection<E> BlockingQueue<E> Som ett exempel köar vi några figurer i en LinkedBlockingQueue

LinkedBlockingQueue public static void main(String[] args) { LinkedBlockingQueue<Figur> queue = new LinkedBlockingQueue<Figur>(); try{ queue.put(new Triangel(1.3, 2.7)); queue.put(new Rektangel(5.6, 2.2)); queue.put(new Cirkel(9.4, "Gul")); queue.put(new Triangel(2.7, 5.9, "Vit")); queue.put(new Rektangel(7.2, 5.0,"Orange")); } catch(InterruptedException ie){ System.err.println("KÖPROBLEM:"); System.err.println(ie.getMessage()); }

Den förenklade for-satsen Istället för: for(int i= 0; i< queue.size(); i++) { figur = queue.take(); totalYta += figur.visaArea(); } Så kan figurerna i kön hanteras enligt: for(Figur figur : queue) Ett komplett kodexempel finns på kurshemsidan!

Uppgift A Om ni inte redan börjat så är det nu dags att starta med Uppgift A Alla ska redovisa en egen lösning Det är absolut INTE tillåtet att kopiera andras lösningar Däremot så får ni gärna Bilda studiegrupper Samråda med handledarna

Tack för idag!