Föreläsningar nov 5 v 45. Objektorientering och arv.
|
|
- Bengt Mattsson
- för 8 år sedan
- Visningar:
Transkript
1 Föreläsningar nov 5 v 45. Objektorientering och arv. Komplexa tal definierade cartesiskt eller polärt. Komplexa tal kan beskrivas på två sätt, t ex kan samma komplexa tal kan skrivas som 3 + 4i eller som 5e i*fi där fi = arctan (4/3); Genom att att använda arv kan man i Objekt-orienterade språk i denna och liknade situtioner skapa en supertyp (som vi i vårt fall döper till Complex) som har två subtyper för de olika sätt som vi kan skapa komplexa tal (vi döper de två varianterna till Cart och Polar). I UML: Om nån metod abstrakt hela klassen abstrarat kan ej instansieras Klassnamnet kursiverat Complex public abstract double re(); public abstract double im(); public abstract double modulus(); public abstract double argp(); public abstract boolean equals(complex z2); public abstract Complex conjugate() public Complex add(complex z2) public Complex sub(complex z2) public Complex mult(complex z2) public Complex div(complex z2) ) betyder ärver, skrivs med extends i Java abstrakta metoder saknar kropp, måste implemnteras någonstans i ärvande klasser. I UML kursivt konkreta metoder har kropp, finns gratis i objekten av ärvande klass. Cart private double real private double imag public Cart(double ire, double iim) public double re() public double im() public double modulus() public double argp() public boolean equals(complex z2) public Complex conjugate() Polar private double rr private double arg public Polar(double ir,double.. public double re() public double im() public double modulus() public double argp() public boolean equals(complex z2 public Complex conjugate()
2 I Java kan detta implementeras på detta sätt: public abstract class Complex { public abstract double re(); public abstract double im(); public abstract double modulus(); public abstract double argp(); public abstract boolean equals(complex z2); public Complex add(complex z2){ return new Cart(this.re() + z2.re(), this.im() + z2.im()); public Complex sub(complex z2) { return new Cart(this.re() - z2.re(), this.im() - z2.im()); public Complex mult(complex z2) { return new Polar(this.modulus()*z2.modulus(), this.argp() + z2.argp()); public Complex div(complex z2) { return new Polar(this.modulus()/z2.modulus(), this.argp() - z2.argp()); { return re() + " + " + im() + "i" + "\t " + modulus() + "*exp(i*" + argp() + ")"; public class Cart extends Complex { private double real; private double imag; public Cart(double ire, double iim) { real = ire; imag = iim; public boolean equals(complex z2) { return (real == z2.re()) && (imag == z2.im()); public double re() { return real;
3 public double im(){ return imag; public double modulus(){ return Math.sqrt(real*real + imag*imag); public Complex conjugate() { return new Cart(real, -imag); public double argp(){ if (real > 0.0 ) { return Math.atan(imag/real); else if (real == 0.0 && imag == 0.0){ return 0.0; else if (real == 0.0 && imag > 0.0){ return Math.PI; else if (real == 0.0 && imag < 0.0){ return - Math.PI; else { return Math.atan(imag/real) + Math.PI; public class Polar extends Complex { private double rr; private double arg; public Polar(double ir, double iarg) { rr = ir; arg = iarg; public boolean equals(complex z2) { return (rr == z2.modulus() ) && (arg == z2.argp()); public double re() { return rr*math.cos(arg); public double im(){ return rr*math.sin(arg); public Complex conjugate() { return new Polar(rr, -arg);
4 public double modulus(){ return rr; public double argp(){ return arg; De konkreta (dvs icke-abstrakta) subtyperna (klasserna) har som förut privata instansvariabler, subtypen Cart har en instansvariabel för det komplexa talets realdel och en instansvariabel för det komplexa talets imaginärdel medan subtypen Polar har en instansvariabel för det komplexa talets modulus (belopp) och en instansvariabel för det komplexa talets "argument" (vinkel). Liksom förut måste vi kunna skapa nya komplexa tal, vilket vi som förut gör med konstruktorerna för de två olika konkreta subtyperna. Vi kan alltså skapa ett komplext tal på två olika sätt. Delar av algebran för komplexa tal har definierats med metoder redan i Complex, och behöver då inte definieras i subtyperna, medan andra definieras i subtyperna. Rubrikerna för de senare har då deklarerats abstrakt i Complex för att tvinga programmeraren att definiera metoderna senare i subtyperna. En abstrakt metod saknar kropp, som ersätts med semikolon. I rubriken skall ingå ordet abstract. En klass med (minst) en abstrakt metod måste deklareras med abstract. Ett testprogram : public class TestComplex { public static void main(string [] iargs) { System.out.println(" (3+4i)= " + new Cart(3, 4)); System.out.println(" (3+4i)/(1-2i) = " + (new Cart(3, 4)).div(new Cart(1, -2))); System.out.println(" (3+2i)(4+5i) = " + (new Cart(3, 2)).mult(new Cart(4, 5))); System.out.println(" Ex = " + ((new Cart(1, -2)).div(new Cart(3, 4)).sub( (new Cart(2, 1)).div(new Cart(0, 5))))); System.out.println(); Complex z1 = new Cart(3, 4); // Cart subtyp till Complex.OK Complex z2 = new Cart(1, -2); //Finns inga objekt som är "bara" Complex Complex z3 = new Cart(3, 2); // Ok ändå Complex z4 = new Cart(4, 5); Complex z5 = new Cart(2, 1); Complex z6 = new Cart(0, 5); System.out.println(" (3+4i)= " + z1); System.out.println(" (3+4i)/(1-2i) = " + z1.div(z2)); //div OK på subtyper System.out.println(" (3+2i)(4+5i) = " + z3.mult(z4)); System.out.println(" Ex = " + (z2.div(z1)).sub((z5).div(z6))); System.out.println(); Complex z11 = new Polar(5, );// Polar subtyp till Complex.OK System.out.println(" (3+4i)= " + z11); System.out.println(" (3+4i)/(1-2i) = " + z11.div(z2));
5 /* Körresultat : java TestComplex (3+4i)= i 5.0*exp(i* ) (3+4i)/(1-2i) = i *exp(i* ) (3+2i)(4+5i) = i *exp(i* ) Ex = i *exp(i* ) (3+4i)= i 5.0*exp(i* ) (3+4i)/(1-2i) = i *exp(i* ) (3+2i)(4+5i) = i *exp(i* ) Ex = i *exp(i* ) (3+4i)= i 5.0*exp(i* ) (3+4i)/(1-2i) = i *exp(i* ) Process TestComplex finished */ Om arv. Abstrakta klasser kan inte instansieras, men klassnamnet kan användas som typ och alla subtyper innefattas i denna "supertyp". Metoder och variabler i en klass som är private kan bara användas i klassen själv, inte ens i ärvande klasser. Genom att förklara metoder och variabler protected kan de användas i ärvande klasser, detsamma gäller förståss om de är public men de vill man ofta inte, speciellt för variabler eftersom klassen då ej skulle bli en abstrakt datatyp (ADT). Metoder och variabler som finns i en superklass finns alltså normalt automatiskt i subklasser. Men man kan också omdefiniera (override) metoder och variabler i en superklass i en subklass. Omdefiniering (override) är något annat än överladdning (overload).vill man ändå använda metoder och variabler i en superklassen skriver man super. före namnet på metoden eller variablen i en superklassen. super kan ensamt även användas för att komma åt konstuerare i superklasser. Alla klasser som inte ärver nån annan klass ärver automatiskt klassen Object. Alla klasser ärver följdaktligen klassen Object, direkt eller indirekt. Fylligare och mer om arv i DD kapitel 9, vilket kanske är bokens viktigaste kapitel.
6 Exempel : DD 9.16 Case Study A PayrollSystem Employee private String firstname; private String lastname; public Employee(String first, String last) public String getfirstname() public String getlastname() ; public abstract double earnings); Boss private double weeklysalary public Boss(String first, String last, doubly salary) public void setweeklysalary(doubly salary) public double earnings() PieceWorker private double wageperpiece private int quantity public PieceWorker(String first, String last, double wage, int numberofitems ) public void setwage(doubly wage) public setquantity(int number of Items) public double earnings() HourlyWorker private double wage private double hours public HourlyWorker(String first, String last, doubly wageperhour, double hoursworked) public void setwage(doubly wageperhour) public void sethours(double hoursworked public double earnings() CommisionWorker private double salary private double commision private int quantity public CommisionWorker(String first, String last, doubly salary, dobly commision, int quantiy) public void setsalary(doubly wweklysalary) public void setcommision(double itemcommision) public void setquantity(int totalsold) public double earnings()
7 Exempel : En gammal tentamensuppgift 1 a). Antag att länder kan vara antingen monarkier eller republiker. Statschefen i en monarki är en regent (dvs en kung eller regerande drottning), statschefen i en republik är en president. Alla monarkier och vissa republiker har ett parlamentariskt system med en regeringschef med titeln premiärminister, men i vissa republiker som ej har ett parlametariskt system (t ex USA) är presidenten även regeringschef. Modellera i Java med fyra klasser denna situation, som den dessutom beskrivs med nedanstående UML-liknade klassdiagram: 9p) Land String namn String statschef() String regeringschef() Monarki String regent String premiärminister String tostring() Republik String president String tostring() ParlamentariskRepublik String premiärminister String tostring() b) Skriv en klass med ett huvudprogram som skapar en array med tre länder och som skriver ut information om länderna. Utskriften skall bli så här: Sverige (monarki) Statchef : Kung Karl XVI Gustav. Regeringschef : Göran Persson USA (republik) Statchef och regeringschef : President William Clinton Frankrike (parlametarisk republik) Statchef : President Jaques Chirac. Regeringschef : Lionel Jospin Utskiften av uppgifterna om de tre länderna skall ske utan användning av instanceof och med metoderna tostring(). 3p) c) Arrayen i uppgift b) kan skapas och instansieras på två sätt. Hur ser det sätt ut som du inte använde i uppgift b)? 2p)
8 2 a) Ge ett exempel på dynamisk bindning av metoder i Java. 2p) Förslag till svar. public abstract class Land { // 1 a) protected String namn; public abstract String statschef(); public abstract String regeringschef(); public class Monarki extends Land{ private String regent; private String premiärminister; public Monarki(String inamn, String iregent, String ipm) { namn = inamn; regent = iregent; premiärminister = ipm; public String statschef(){ return regent; public String regeringschef() { return premiärminister; { return namn + " (monarki) \n Statchef : " + regent + ". Regeringschef : " + premiärminister; public class Republik extends Land{ protected String president; public Republik(String inamn, String ipresident) { namn = inamn; president = ipresident; public String statschef(){ return president; public String regeringschef() { return president; { return namn + " (republik) \n Statchef och regeringschef : " + president;
9 public class ParlamentariskRepublik extends Republik { private String premiärminister; public ParlamentariskRepublik(String inamn, String ipresident, String ipm) { super(inamn, ipresident); premiärminister = ipm; public String statschef(){ return president; public String regeringschef() { return premiärminister; { return namn + " (pralmetarisk republik) \n Statchef : " + president + ". Regeringschef : " + premiärminister; public class Lander { // 1 b) public static void main(string [] args) { Land [] land = {new Monarki("Sverige", "Kung Carl XVI Gustav", "Göran Persson"), new Republik("USA", "President William Clinton"), new ParlamentariskRepublik("Frankrike", "President Jaques Chirac", "Lionel Jospin"); for (int i = 0; i < land.length; i = i+1) { System.out.println(land[i]); Land [] land = new Land[3]; // 1c) land[0] = new Monarki("Sverige", "Kung Karl XVI Gustav", "Göran Persson"); land[1] = new Republik("USA", "President William Clinton"); land[2] = new ParlamentariskRepublik("Frankrike", "President Jaques Chirac", "Lionel Jospin"); // 2 a) Metoden tostring() i snurra i 1 b) är den metod som "hör ihop med" just den typ av objekt som är aktuellt just då.
10 Exempel : En gammal tentamensuppgift 1 a). Alla länder har ett namn och ett namn på sin valuta. Vissa länder är medlemmar i EU och blev medlemmar ett visst år. Vissa av EU-länderna har en gemensam valuta med namnet "euro". Vissa länder (t ex Sverige som är ett EU-land, Frankrike som är ett Euro-EU-Land och Norge som bara är ett Land, men inte Storbrittanien som är ett EU-land) är med i Shengen-samarbetet. Dessa länder har tillgång till ett polisregister register som dessa staters polismyndigheter kan söka i. Modellera i Java med sex klasser och ett gränsnitt denna situation, som den dessutom beskrivs med nedanstående UML-liknade klassdiagram. Samtliga klasser skall dessutom ha lämplig konstruktor som ger instanvariablerna lämpliga värden. 9p) Land - String namn //landets namn - String valuta //valutans namn Shengen public Object searchfor(string iperson) EULand - int inträdesår ShengenLand - Map register EuroEULand ShengenEULand - Map register ShengenEuroEULand - Map register Vänd! Tips: Implementeringen av metoden searchfor(string iperson) görs med metoden get i Map, se t ex Skansholm sid 498. Metoden deklareras alltså i gränsnittet Shengen,och skall implementeras av "Shengen-klasserna". Konstruktorn för Shengenländer har en parameter för att instansiera registret av typen Map. Euroländer får valutanamnet "euro" automatiskt utan medverkan av konstruktorerna för dessa sorts länder. b). Kan man i Java förenkla problemet i 1 a) genom att använda multipelt arv? 1p) c). Vilka av namnen Land, EULand, EuroEULand, Shengen, ShengenLand, ShengenEULand, ShengenEuroEULand och Map kan användas som typnamn? 1p)
11 d). Skulle man kunna ha en array där elementen skull kunna vara instanser av vilken som helst av de sex klasserna? Hur deklarerar man i så fall en sådan array, och hur tillfogas i så fall några länder, t ex Sverige och Frankrike och Norge till vektorn? 1p) e). Förse de av de sex klasserna där det behövs med en metod String tostring() som returnerar landets namn, namnet på valutan och i förekommande fall inträdesår i EU samt om landet är ett Shengenland. 3p) f). Skriv en metod void printinfo(vector länder) som med en slinga (snurra, loop) skriver ut information om alla länder i vectornländer med hjälp av tostring() i uppgift e. g) Förklara vad som menas med dynamisk bindning. 2p) Förslag till svar. public class Land { protected String valuta = ""; protected String namn = ""; public Land(String inamn, String ivaluta) { namn = inamn; valuta = ivaluta; { return (namn + ": valuta " + valuta); //1a, 1e public interface Shengen { public Object searchfor(string iperson); import java.util.*; public class ShengenLand extends Land implements Shengen { private Map register; public ShengenLand(String inamn, String ivaluta, Map iregister) { super(inamn, ivaluta); register = iregister; public Object searchfor(string iperson){ return register.get(iperson); { return super.tostring() + " i Shengen";
12 public class EULand extends Land { protected int inträdesår; public EULand(String inamn, String ivaluta, int iinträdesår) { super(inamn, ivaluta); inträdesår = iinträdesår; { return super.tostring() + " i Eu år " + inträdesår; import java.util.*; public class ShengenEULand extends EULand implements Shengen { private Map register; public ShengenEULand(String inamn, String ivaluta, int iinträdesår, Map iregister) { super(inamn, ivaluta, iinträdesår); register = iregister; public Object searchfor(string iperson){ return register.get(iperson); { return super.tostring() + " i Shengen"; public class EuroEULand extends EULand { public EuroEULand(String inamn, int iinträdesår) { super(inamn, "euro", iinträdesår);
13 import java.util.*; public class ShengenEuroEULand extends EuroEULand { private Map register; public ShengenEuroEULand(String inamn, int iordförandeår, Map iregister) { super(inamn, iordförandeår); register = iregister; public Object searchfor(string iperson){ return register.get(iperson); { return super.tostring() + " i Shengen"; Multipelt arv är inte tillåtet i Java. Det vore bekvämt här Alla // 1b // 1c import java.util.*; // public class TestLander { public static void main(string [] args) { Vector lv = new Vector(); //1d Map m = new Hashtable(); lv.add(new ShengenEULand("Sverige", "krona", 1995, m)); lv.add(new ShengenEuroEULand("Frankrike", 1955, m)); lv.add(new EULand("Storbrittanien","pund", 1965)); lv.add(new Land("Norge","krona")); printinfo(lv); public static void printinfo(vector v) { for(int i = 0; i < v.size(); i = i+1) { System.out.println(v.elementAt(i)); // 1f Beroende på objektets typ används korrekt version av en metod, t ex tostring() ovan. Detta fungerar eftersom metodrna hittas i minnet via objekten, som innehåller referenser till adekvat version //1g
14 Hemuppgifter redovisning v CBA-hemuppgift : Implementera linjär-algebra-vektorer i planet med klassdefinitioner med en abstract klass Vector och två konkreta subklasser Cart och Polar för att kunna instansiera vektorena kartesiskt eller polärt. Man skall kunna göra de operationer på vektorer som vi kunde göra med klassen Vector i förra veckans hemuppgifter. Skriv om och komplettera testprogrammen från förra veckans hemuppgifter så att du kan testa våra nya klasser. Jag gjorde enligt följande UML-diagram: Vector public abstract double xproj(); public abstract double yproj(); public boolean equals(vector other) public Vector sum (Vector other) public Vector difference(vector other) public Vector scalarmultiple(double k) public double dotproduct(vector other) public double norm() Cart private double xcomp; private double ycomp; public Cart(public double ix, double iy) public double xproj() public double yproj() Polar private double length; private double fi; public Polar(double, ilength, double ifi ) public double xproj() public double yproj() public scalarmultiple(double k) Skapa lämpligen en egen katalog vectorinherit för denna uppgift. Enklast görs hemuppgiften genom att modifiera klassen Vector.java från tidigare hemuppgift.
15 2. CBA-hemuppgift : Början till "Vick-spelet". Ändra i Gadget från förra hemupgifterna så att det fungerar som förut när du kör MoveGadget med klasserna från denna veckas uppgift CBA-hemuppgift : Början till "Vick-spelet". Skriv en klass Board för att definera en kvadratisk yta med sidan 0.35 m. Förse Board med en metod public boolean outsideboard(vector p) som returnerar om p innanför ytan. Ändra i Gadget och MoveGadget så att ett förmål (Gadget) känner till vilken yta (Board) föremålet är placerad på och så att man återplacerar föremålet i startläge när föremålet kommer utanför ytan. Förlag till design (även din Vector-klass måste ju vara med, finns ej i klassdiagrammet) : MoveGadget public static void main(..) { Gadget gadget Board board Board private final double boardsize public boolean outsideboard(vector P) Gadget private Vector p private Vector v private Board board private static final double g = 9.81 public void placeon(board iboard) public void tick(double deltat, double alpha, double beta) public void resetat(vector ip, Vector iv) public Vector getwhere()
16 4. B-hemuppgift : Uppgift DD 9.14 om fyrhörningar. För att kolla att det fungerar kan det vara roligt (ingår i uppgiften) att rita upp de skapade fyrhörningarna. Följande två klasser vars källkod finns på /info/inda01/inherit/b kan användas för att rita olika fyrhörningar. Provkörning av min lösning kan göras med -..> java DrawQuadrilaterals i samma katalog.varje gång man trycker på vagnretur (return) på tangentbordet med markören i det aktiva terminalfönstret ritas en ny fyrhörning. Fyrhörningarna skapas med de konstruerare jag har i min lösning, men löser du uppgiften med andra konstruerare får man ju ändra programmet. Jag utnyttjar också att jag för alla sorters fyrhörningar har en metod Vector [] getcorner() som returerar de fyra hörnens läge. import java.io.*; import java.awt.*; import java.awt.event.*; public class DrawQuadrilaterals { public static void main (String[] argv) throws IOException { DrawingFrame f = new DrawingFrame(800); f.drawql(new Quadrilateral(new Cart(100, 100), new Cart(100, 200), new Cart(300, 450), new Cart(300, 270) )); System.in.read(); f.drawql(new Trapetzoid(new Cart(100, 100), new Cart(100, 200), new Cart(100, -10), 150)); System.in.read(); f.drawql(new Parallelogram(new Cart(100, 100), new Cart(100, 10), new Cart(10, 90))); System.in.read(); f.drawql(new Rectangle(new Cart(100, 100), new Cart(100, 10), 50)); System.in.read(); f.drawql(new Square(new Cart(100, 200), new Cart(100, 10))); System.in.read(); System.exit(0);
17 import java.io.*; import java.awt.*; import java.awt.event.*; public class DrawingFrame extends Frame { private Quadrilateral ql; public DrawingFrame(int ibredd) { setsize(ibredd, ibredd); setvisible(true); public void drawql(quadrilateral iql) { ql = iql; repaint(); public void paint(graphics g) { Vector [] c = ql.getcorner(); for(int i = 0; i < 4 ; i = i+1) { g.drawline((int) ((c[i]).xproj()), (int) ((c[i]).yproj()), (int) (c[(i+1) % 4]).xProj(), (int) (c[(i+1)%4]).yproj()); Skriv klasserna för de olika fyrhörningarna. Man skall förstås genom arv framhäva att en kvadrat är en rektangel som är en parallelogram som är en trapetsoid som är en fyrsiding. Försök att göra konstruerarna på så sätt att så lite information som möjligt används för att specifierade olika fyrsidingarna. Konstruerarna kan eventuellt använda sig av varandra med super.det framgår inte av boken om det är enbart fyrsidingarna som skall specifieras eller fyrsidingarna och deras orientering, men det blir generellast om man även kan specificera orienteringen. Min lösning antyds med klassdiagrammen på nästa sida, och vad de publika konstuerarna konstuerar hoppas jag framgår av diagrammen till höger. De "protected" konstruerarna kan behövas om man använder super.
18 Quadrilateral protected Vector [] corner = new Vector [4]; public Quadrilateral(Vector v0, Vector v1, Vector v2, Vector v3) protected Quadrilateral() vside1 public Vector [] getcorner() v1 v0 v3 v2 Trapetzoid v0 vside1 public Trapetzoid(Vector v0, Vector v1, Vector vside1, double lengthside2) protected Trapetzoid() v1 lengthside2 Parallelogram public Parallelogram(Vector v0, Vector vside1, Vector vside2) protected Parallelogram() vside2 v0 vside1 Rectangle lengthside2 public Rectangle(Vector v0, Vector vside1, double lengthside2) v0 vside1 Square public Square(Vector v0, Vector vside1) v0 vside1 vside1
19 5. A-hemuppgift : Början till Schack-spelet. Skriv klasser för ett arvsträd för schackpjäser enligt detta UML-liknade klassdiagram: Chessman protected boolean white; public abstract boolean legalmove(path p); public String tostring; public boolean iswhite() Queen public Queen(boolean iwhite) pub lic boolean legalmove(path p) King public King(boolean iwhite) pub lic boolean legalmove(path p) Bishop public Bishop(boolean iwhite) pub lic boolean legalmove(path p) Rook public Rook(boolean iwhite) pub lic boolean legalmove(path p) Pawn Knight public Knight(boolean iwhite) pub lic boolean legalmove(path p public Pawn(boolean iwhite) pub lic boolean legalmove(path p) Metoden legalmove(path p) skall returnera om draget p är ett korrekt schackdrag för denna sorts schackpjäs (på ett tom bräde). Metoden tostring() retunerar t ex Kung för objekt av klassen King osv. Pjäser "vet" om de är vita eller svarta, och iswhite() frågar pjäser om detta. Klassen Path skrevs i hemuppgifterna förra veckan. Skriv ett testprogram som kan mata in drag gång på gång (vidareutveckla testprogrammet från förra veckan) och skriver ut om draget är korrekt för de sex olika sorternas pjäser. Min lösning som vanligt på /info/inda01/inherit/a.
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :
Observera : Lämna in svaren på frågorna på detta blad genom att lämna in detta blad!
KTH Nada Leif Kusoffsky INDA Introduktion till Datalogi Tentamen 2002 augusti 22 Observera: Skriv hela tentan. Man kan inte längre tillgodoräkna sig resultat från kontrollskrivningar, ej heller bonuspoäng
Föreläsningar 11, 12 (okt 08, okt 12 v 40). Poster och Abstrakta datatyper.
Föreläsningar 11, 12 (okt 08, okt 12 v 40). Poster och Abstrakta datatyper. Komplexa tal definierade med en klass med publika instansvariabler. Vi ska implementera en ny egendefinerad typ Complex för komplexa
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
INDA Introduktion till Datalogi Tentamen Mars 09
KTH Nada Leif Kusoffsky INDA Introduktion till Datalogi Tentamen 20002 Mars 09 READ THESE INSTRUCTIONS VERY CAREFULLY. IF YOU DO NOT FOLLOW THESE INSTRUCTIONS, WE WILL BE COMPLETELY MERCILESS. There are
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).
Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator
Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel
Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:
Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.
DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 40 p) Lärare, jourhavande lärare
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv
Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7.
Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7. Vad som menas med arrayer, element och [] se DD 7.1, 7.2, 7.3. Arrayer som parametrar DD 7.5, 7.6. Jag kommer att förklara samma sak med
Malmö högskola 2007/2008 Teknik och samhälle
Laboration 8 Avsikten med denna laboration är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom
TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
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
Objektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.
DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel
Malmö högskola 2008/2009 CTS
Laboration 8 Avsikten med laborationen är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser
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) Den nya klassen behåller alla egenskaper som den gamla
Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Signatur public static int parseint (
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?
Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
OOP Objekt-orienterad programmering
OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort
Klasshierarkier - repetition
Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet
"Ä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 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande
TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Arv Polymorf UML (klassdiagram) 1 Arv Möt tre studenter
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.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
TENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 4 (12p+8p+12p+8p = 40p) Lärare, jourhavande lärare :
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;
public interface Skrivbar { void skriv(); public class Punkt implements Skrivbar { public double x; public double y; public Punkt(double xx, double yy) { x = xx; y = yy; public Punkt() { @Override public
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,
Laboration 1 - Grunderna för OOP i Java
Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben
Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och
Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält
Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1
Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
JAVA Mer om klasser och objektorientering
JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det
Kort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Att instansiera en klass Objekt I Man instansierar (skapar
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl 10.00 13.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
Klasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Laboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Föreläsning 9: Arv och UML
TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;
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
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning X: Klass diagram, inkapsling, arv Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Instansiering Åtkomst Abstrakt datatyp UML Överlagring
Tentamen. Lösningsförslag
Sida 1/8 Tentamen Grundläggande programmering i Java A 5p, DTAA32 2002-03-22 Lösningsförslag Uppgift 1 ( 3p ) Utskriften blir: Skriv in ett tal 24 47 48 intal=471 Uppgift 2 ( 6p ) a.) b.) c.) d.) e.) falskt
Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.
Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet
Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.
Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Föreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S
Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för M1, K2, Media1 och I1 (1p) 16 december 2000 Hjälpmedel: En Javabok. System.out är ett objekt kopplat till skärmen, dvs samma sak som i labbarna
Laboration 13, Arrayer och objekt
Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift
UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
UML Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer
Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,
Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.
Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation
TENTAMEN OOP
TENTAMEN OOP 2014-03-15 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )
(26 januari 2018 F3 1 ) Dagens föreläsning Arrayer och klasser Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 2 ) Arrayer En array är en datatyp
Design av en klass BankAccount som representerar ett bankkonto
Klasser Kommer ta upp följande begrepp: Design av en klass Implementera en klass Testa en klass med en mainmetod Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar och variablers
LÖSNINGSFÖRSLAG TENTAMEN
LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 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 På denna föreläsning: Konstruktorer Statiska metoder & attribut
Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.
Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus
Lösningsförslag övning 2.
Objektorienterad programmering, Z1 Lösningsförslag övning 2. Uppgift 1. public class SIUnits { public static double yardspermeter = 1.093613; public static double poundperkilo = 2.204623; public static
Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!
itop F8 Arv (Inheritance) Läsanvisning: arv: i kap 10, exceptions: i kap 15 mer kommer sen UML: tas bara upp i OH Object Kalle Student Person Graduate Lärare! Arv! Object, instanceof! Relationer! UML Nästa
kl Tentaupplägg
Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I
Chapter 4: Writing Classes/ Att skriva egna klasser.
Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad
SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.
SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata
Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt
Föreläsning 15 & 16 ARV Objektorienterad programmering (OOP) Idé: vi ser ett program som en modell av verkligheten Ursprung: Simula-67, Norsk regnesentral, 1960-talet Smalltalk-80: Xerox PARC, 1970-talet
Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel
Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
PROGRAMMERING-Java TENTAMINA
PROGRAMMERING-Java TENTAMINA Nicolina Månsson 2010-03-17 Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. - För
Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design
Integritetsprincipen Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Integritetsprincipen Gör attribut, metoder och klasser så hemliga de går. Lämna inte ut