Klassarv och inkapsling

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.
1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Repetition av objektorientering
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.
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.
Programkodens uppbyggnad
Att programmera i språket Java
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 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
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
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Klasser och objekt Klasser, objekt och instansvariabler
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.
Objektorienterad Modellering Programmering och Analys
Arv.
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.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
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.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
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.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Objektorienterad programmering i Java
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.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
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 5 Klasser och instanser
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.
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.
Presentationens avskrift:

Klassarv och inkapsling ITK:P1 Föreläsning 3 Klassarv och inkapsling DSV Marie Olsson

En programmeringsprincip Divide and Conquer En urgammal princip Att dela upp koden i hanterbara delar Ju större program, desto större behov av modularisering Ett system delas upp i klasser Klasser delas in i paket (package)

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 Inspektorer – Mutatorer

Metoder Ett annat sätt att dela upp koden i lagom stora enheter som utför en uppgift är att skriva metoder. Metoder har en returtyp (eller void) Metoder kan ta argument: public int addera (int a, int b) { return a + b; }//en rätt onödig exempelmetod

Överlagring Metoder och konstruktorer i samma klass med samma namn MEN med olika parameterlistor Exempel med konstruktorer: public Hund() {} public Hund(String namn) {} public Hund(String namn, String ras) {} public Hund(String namn, String ras, int ålder) {}

Kodexempel class Hund { private String namn, ras; private int ålder; public Hund(String namn) { this.namn = namn; } // Konstruktor som tar ett argument public Hund(String namn, String ras) { this.ras = ras; } // Konstruktor som tar två argument

Kodexempel fortsättning public Hund(String namn, String ras, int åld) { this.namn = namn; this.ras = ras; ålder = åld; } // Konstruktor som tar tre argument public String visaNamn() { return namn; }

Kodexempel fortsättning public String visaRas() { return ras; } public int visaÅlder() { return ålder; }//Hund

Kodexempel fortsättning public class F3_exempel { public static void main(String[] args) { Hund hund1 = new Hund("Fido"); System.out.println("Hundens namn är: " + hund1.visaNamn() + " \n"); Hund hund2 = new Hund("Tom","tax"); System.out.println("Hundens namn är: " + hund2.visaNamn()); System.out.println("Hundens ras är: " + hund2.visaRas() + " \n");

Kodexempel fortsättning Hund hund3 = new Hund("Bellman","schäfer",11); System.out.println("Hundens namn är: " + hund3.visaNamn()); System.out.println("Hundens ras är: " + hund3.visaRas()); System.out.println("Hundens ålder är: " + hund3.visaÅlder()); }//main }//F3_exempel

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

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

Klassvariabler De flesta attribut är instansvariabler Alla objekt får då egna variabler Det finns dock undantagsfall då objekten i en klass behöver ha gemensamma klassvariabler I Java markeras detta med ordet static och en klassvariabel kan deklareras enligt: private static int klassVariabel;

Klassvariabler En vanlig användning är när klassen behöver en räknare: public class Katt { private static int kattNummer; public Katt(){ ++kattNummer; }//konstruktor }

Slut för idag! Tack för idag!