OOMPA 2D1359 Föreläsning 7

Storlek: px
Starta visningen från sidan:

Download "OOMPA 2D1359 Föreläsning 7"

Transkript

1 OOMPA 2D1359 Föreäsning 7 Objektorienterad Modeering Programmering och Anays Innehå Pragmatisk översikt av Java Java kort översikt Kasser: attribut, metoder, konstanter, arv Abstrakta kasser Interface Exempe Java Java är konstruerat på SUN Första versionen säpptes 1995 Starkt typat Dvs det går att avgöra typkompatibiitet av aa uttryck i programmet vid kompieringstifäet. Virtue maskin (VM) som gör det maskinoberoende En specie VM per pattformstyp överbryggar oikheter i pattformarnas arkitektur Kassbibiotek språkkasser, stränghantering, grafik, gränssnitt, fönster, nät, händesehantering, processer, coections, mm Bindning ti WWW med appets och iknande Har fått sin huvudsakiga spridning via Internet Syntax som C, semantik och kasser mer som Smatak - 2-1

2 Virtue maskin käkod kompiera (javac) java bytekod kör (java) en virtue maskin per pattformstyp Pc VM Mac VM Unix VM Java: mitt första "program" Skapa en fi med namnet MyFirstProgram.java Skriv föjande kod i fien: import java.io.*; pubic cass MyFirstProgram{ pubic static void main (String [] args) { System.out.printn("Mitt första program!"); - 4-2

3 ... kompiera och kör Kompiera >javac MyFirstProgram.java Då genereras en körbar fi MyFirstProgram.cass Kör genom att starta Javas virtuea maskin med program/kassnamnet som argument >java MyFirstProgram Mitt första program! Regen är att kassens static void main-metod atid exekveras Ett "Javaprograms" struktur Kaas också för medemmar En kass ser ut på föjande sätt pubic cass KassNamn extends SuperKassNamn{ attribut (instans- och kassvariaber) metoder (instans- och kassmetoder) konstruktörer En metod modifierare returtyp funktionsnamn(argument){ programsatser - 6-3

4 Konstruera kass Kassnamn = finamn En kass ska ha samma namn som den fi den paceras i Kassen Circe i fien Circe.java En fi kan innehåa fera kasser men bara en av dem kan vara dekarerad pubic, Det är den pubika kassens namn som motsvarar fiens Definition av kass, ma pubic cass KassNamn extends SuperKassNamn{ attribut (instans- och kassvariaber) metoder (instans- och kassmetoder) konstruktörer Dekarera och instansiera Dekaration av instans KassNamn variabenamn; Instansiering variabenamn = new KassNamn(); aternativt, både dekaration och instansiering på en gång KassNamn variabenamn = new KassNamn(); - 8-4

5 Kompiera och köra Environmentvariabe Gör först (NADA) modue add java Hemma bör du expicit sätta path (se systemdokumentation) Om du har en egen java-kataog kan det vara idé att sätta environmentvariaben CLASSPATH setenv CLASSPATH $HOME/MyJAVA:. Kompiera med javac finamn javac Kassnamn.java om at går bra skapas då en fi med namnet Kassnamn.cass Kör med java kassnamn java Kassnamn Exempe: Kass // Kassdefinition (utan extends medför subkass ti Object) pubic cass Circe {pubic doube x, y; attribut pubic doube r; pubic doube circumference(){return 2 * 3.14 * r; pubic doube area(){return 3.14 * r * r; metoder // för att testa skriver vi en static main-metod // som används då man kör från termina pubic static void main (String args[]) { //Vi dekarerar en temporär variabe Circe circe; // och instansierar circe = new Circe();

6 ... forts... //vi ändrar några värden circe.x = 100; circe.y = 200; circe.r = 20; // vi gör några testutskrifter System.out.printn("Cirkens x-koordinat: " + circe.x + " och dess y-koordinat: " + circe.y); System.out.printn("den har en radie också: " + circe.r); System.out.printn( "genom anrop av metoden circumference: " + circe.circumference() + " fick vi omkretsen"); System.out.printn("och med area:" + circe.area() + " dess area"); och så sparar vi, kompierar och kör Spara Spara fien med samma namn som kassen med extension.java, dvs här Circe.java Kompiera javac Circe.java Skapar en fi Circe.cass Kör java Circe

7 Exempe: Eka argument Skapa fi Echo.java (som ekar givna argument) pubic cass Echo { pubic static void main(string[] argv) { for(int i = 0; i < argv.ength; i++) System.out.print(argv[i] + " "); System.out.print("\n"); System.exit(0); Kompiera javac Echo.java Kör java Echo detta är input Syntax sammanfattning kassdefinition superkass (kan uteämnas om Object ska vara superkass) vektor med strängar pubic cass Echo extends Object{ kassmetod pubic static void main(string[] argv) { "begin" med static for-oop for(int i = 0; i < argv.ength; i++) skriv ut på termina System.out.print(argv[i] + " "); System.out.print("\n"); System.exit(0); "end" metoden main beskriver huvudprogrammet (då man kör från termina) pubic anger att kass eer metod är synig för aa kasser, metoder och variaber måste atid dekareras med typ ny rad avbryt programmet 7

8 Fera konstruktörer // Kassdefinition med fera konstruktörer pubic cass Circe { //... attribut som tidigare... Argumenten kan ha samma namn som instansvariaberna pubic Circe (doube x, doube y, doube r){ // men då måste vi referera instansvariaberna mha this.ivar this.x = x; this.y = y; this.r = r; definition av en konstruktör som tar en annan cirke som argument pubic Circe(Circe c){x = c.x; y = c.y; r = c.r; oika typer av argument ger oika metoder (överagring) pubic Circe(doube r){this.r = r; Exempe: ampa1 pubic cass Lamp1 { protected booean ison; pubic void turnon() {ison = true; pubic void turnoff() {ison = fase; pubic booean ison() {return ison; pubic void togge() {ison =!ison(); pubic static void main (String args[]) { Lamp1 amp; amp = new Lamp1(); System.out.printn(amp.isOn()); //fase amp.togge(); System.out.printn(amp.isOn());

9 Exempe: ampa2 pubic cass Lamp2 { // defutvärde för ison kan anges vid dekarationen protected booean ison = true; // medemsmetoderna som förut... pubic static void main (String args[]) { Lamp2 amp; amp = new Lamp2(); System.out.printn(amp2.isOn()); //true amp.togge(); System.out.printn(amp.isOn()); Kassvariabe // Kassvariabe med static pubic cass Circe { kassvariabe pubic static doube defautr = 5; vi kan använda kassvariaben för att tex initiera instanvariaber pubic doube x = 0, y = 0, r = defautr; konstant (som ej kan ändras) med fina pubic static fina doube PI = ;

10 Exempe: ampa3 pubic cass Lamp3 { // statisk/kass variabe som deas av aa instanser private static booean defautonvaue = fase; protected booean ison = defautonvaue; //... metoderna som förut pubic static void main (String args[]) { Lamp3 amp; amp = new Lamp3(); System.out.printn(amp.isOn()); amp.togge(); System.out.printn(amp.isOn()); Exempe: ampa4 (med def av konstruktörer) pubic cass Lamp4 { // medemsmetoderna som förut // Vi definierar "egna" konstruktörer pubic Lamp4() {ison = fase; pubic Lamp4(booean boo) {ison = boo; pubic static void main (String args[]) { Lamp4 amp1 = new Lamp4(); Lamp4 amp2 = new Lamp4(true); System.out.printn("Lampa 1: " + amp1.ison() + ", Lampa 2: " + amp2.ison()); amp1.togge(); amp2.togge(); System.out.printn("Lampa 1: " + amp1.ison() + ", Lampa 2: " + amp2.ison());

11 Konstruktör som använder annan konstruktör använd konstruktionen this(...) först i annan konstruktör // vi kan använda en av dom andra konstruktörerna pubic Circe(doube x, doube y){this(x, y, 3); pubic Circe(){this(12, 13); //test pubic static void main (String args[]) { Circe c1 = new Circe(); c1.r = 1000; Circe c2 = new Circe(c1); Circe c3 = new Circe(17, 18); Circe c4 = new Circe(500); main (forts) // testutskrifter System.out.printn("c1 x: " + c1.x + " y: " + c1.y + " r: " + c1.r); System.out.printn("c2 x: " + c2.x + " y: " + c2.y + " r: " + c2.r); System.out.printn("c3 x: " + c3.x + " y: " + c3.y + " r: " + c3.r); System.out.printn("c4 x: " + c4.x + " y: " + c4.y + " r: " + c4.r); utmatningen bir: c1 x: 12 y: 13 r: 1000 c2 x: 12 y: 13 r: 1000 c3 x: 17 y: 18 r: 3 c4 x: 0 y: 0 r:

12 Exempe: ampa5 (en konstruktör använder en annan) pubic cass Lamp5 { //... pubic Lamp5() {this(fase); pubic Lamp5(booean ison) {this.ison = ison; pubic static void main (String args[]) { Lamp5 amp1 = new Lamp5(); Lamp5 amp2 = new Lamp5(true); System.out.printn("Lampa 1: " + amp1.ison() + ", Lampa 2: " + amp2.ison()); amp1.togge(); amp2.togge(); System.out.printn("Lampa 1: " + amp1.ison() + ", Lampa 2: " + amp2.ison()); Exempe: Book pubic cass Book { private String tite, author, isbn; pubic Book(String name, String author, String isbn) { tite = name; this.author = author; this.isbn = isbn; pubic Book(String name) {this(name, ""); pubic Book(String name, String author) {this(name, author, ""); pubic String tostring() {return "Tite: " + tite + " Förf: " + author + " ISBN: " + isbn; pubic static void main (String args[]) { Book book1 = new Book("XXX with Java", "Budd"); Book book2 = new Book("Y Undistied"); System.out.printn("Bok 1: " + book1); System.out.printn("Bok 2: " + book2);

13 Inkudera kasser från andra fier // inkudera kod från bibiotek med import import java.awt.point; importera Point pubic cass Figure { // med protected kan variaben enbart äsas av instanser // eer instanser av subkasser protected Point position = new Point(10, 20); // fast vi kan ge en pubik inspektor pubic Point position() {return position; // en annan metod kan anropa direkt pubic int x() {return position().x; this underförstått // eer med this.meddelande pubic int y() {return this.position().y; testa pubic static void main (String args[]) { //Vi dekarerar en temporär variabe Figure f = new Figure(); System.out.printn("pos: " + f.position() + " x: " + f.x() + " y: " + f.y()); Resutat pos: java.awt.point[x=10,y=20] x: 10 y:

14 Subkass // arv med extends. Vi antar att vi skrivit kass Figure pubic cass Circe extends Figure{ pubic static void main (String[] args) { //Vi kan dekarera en variabe som tihörande typen Figure Figure v1 = new Figure(); //Vi kan dekarera variabe som tihörande typen Circe Circe v2 = new Circe(); //eer typen Figure Figure v3; // men ändå instansiera den som en Circe v3 = new Circe(); och en test System.out.printn("pos: " + v1.position() + " x: " + v1.x() + " y: " + v1.y()); System.out.printn("pos: " + v2.position() + " x: " + v2.x() + " y: " + v2.y() + " area: " + v2.area()); // i v3 som är dekarerad som Figure kan vi inte använda area() // trots att den nu är en Circe System.out.printn("pos: " + v3.position() + " x: " + v3.x() + " y: " + v3.y()); // men med en typecast går det typecast System.out.printn(" area: " + ((Circe) v3).area()); // aternativt kan en metod med samma namn definieras i Figure // och då kommer ändå Circe:s area() användas vid v3.area() eftersom metoder binds dynamiskt Utmatning: pos: java.awt.point[x=10,y=20] x: 10 y: 20 pos: java.awt.point[x=12,y=13] x: 12 y: 13 area: pos: java.awt.point[x=12,y=13] x: 12 y: 13 area:

15 Exempe: kassen Rect med subkass pubic cass Rect { //instansvariaber pubic int x1, y1, x2, y2; //konstruktörer pubic Rect(int x1, int y1, int x2, int y2) { this.x1 = x1; this.y1 = y1; this.x2 = x2; this.y2 = y2; pubic Rect(int width, int height) { this(0, 0, width, height); pubic Rect() { this(0, 0); // metoder pubic void move(int detax, int detay) { x1 += detax; x2 += detax; y1 += detay; y2 += detay; pubic booean isinside(int x, int y) { return ((x >= x1) && (x <= x2) && (y >= y1) && (y <= y2)); pubic Rect union(rect r) { return new Rect((this.x1 < r.x1)? this.x1 : r.x1, (this.y1 < r.y1)? this.y1 : r.y1, (this.x2 > r.x2)? this.x2 : r.x2, (this.y2 > r.y2)? this.y2 : r.y2);

16 ... pubic Rect intersection(rect r) { Rect resut = new Rect((this.x1 > r.x1)? this.x1 : r.x1, (this.y1 > r.y1)? this.y1 : r.y1, (this.x2 < r.x2)? this.x2 : r.x2, (this.y2 < r.y2)? this.y2 : r.y2); if (resut.x1 > resut.x2) { resut.x1 = resut.x2 = 0; if (resut.y1 > resut.y2) { resut.y1 = resut.y2 = 0; return resut; pubic String tostring() { return "[" + x1 + "," + y1 + "; " + x2 + "," + y2 + "]"; och en test (i en separat testkass)... pubic cass RectTest { pubic static void main(string[] args) { Rect r1 = new Rect(1, 1, 4, 4); Rect r2 = new Rect(2, 3, 5, 6); Rect u = r1.union(r2); Rect i = r2.intersection(r1); if (u.isinside(r2.x1, r2.y1)) System.out.printn("(" + r2.x1 + "," + r2.y1 + ") is inside the union"); System.out.printn(r1 + " union " + r2 + " = " + u); System.out.printn(r1 + " intersect " + r2 + " = " + i);

17 ... och subkassen DrawabeRect pubic cass DrawabeRect extends Rect { pubic DrawabeRect(int x1, int y1, int x2, int y2) { super(x1,y1,x2,y2); pubic void draw(java.awt.graphics g) { g.drawrect(x1, y1, (x2 - x1), (y2-y1)); Kass Person med definition av printrutin import java.uti.date; pubic cass Person { pubic String name = ""; pubic Date dateofbirth; pubic Person(String name, Date date) {this.name = name; dateofbirth = date; pubic Person(String name) {this(name, new Date()); pubic int age(){ Date now = new Date(); return now.getyear() - dateofbirth.getyear(); // med tostring definierar vi hur objektet presenterar sig pubic String tostring(){ return "Namn: " + name + " född: " + dateofbirth;

18 och så prövar vi ba tostring pubic static void main (String args[]) { Person p1 = new Person("Kae"); System.out.printn(p1); utmatning: Namn: Kae född: Mon Sep 21 15:45:01 MET Med super kan vi använda metoder i superkass pubic cass Empoyee extends Person { // en statisk (kassvariabe) används för att räkna // anstäda (dvs egentigen anta instanser) static int numberofempoyers = 0; pubic int number; // Med super kommer vi åt superkassens definition pubic String tostring(){return super.tostring() + " anstäningsnummer: " + number; // för att använda superkassens konstruktör används också //super som ska stå först, med syntax: super(argument) pubic Empoyee(String name) {super(name); numberofempoyers = numberofempoyers + 1; number = numberofempoyers;

19 Abstrakt kass eer metod pubic abstract cass ForceOverride { genom att dekarera en metod abstrakt kan vi tvinga subkasser att omdefiniera (annars kan dom inte instansieras) pubic abstract String myname(); pubic String tostring() {return "Namn: " + myname(); I packages kan vi definiera kasser som hör ihop och senare kan importeras tisammans package MinaFigurer; //ska stå först import java.awt.point; pubic abstract cass Figure { protected Point position = new Point(10, 20); pubic Point position() {return position; pubic int x() {return this.position().x; Namnet på en package ska vara detsamma som den kataog fien befinner sig i viket ba medför att oika kasser i en viss package befinner sig i samma kataog

20 andra kasser i samma package Circe.java Rectange.java package MinaFigurer; pubic cass Circe extends Figure{ private doube r = 10; pubic doube radius(){return r;; pubic void radius(doube newr){r = newr; package MinaFigurer; import java.awt.point; pubic cass Rectange extends Figure{ pubic Rectange(){ position = new Point(100, 200); Interface Ett interface definierar ett gränssnitt Detta kan sedan användas av oika kasser i systemet Ett sätt att behåa statisk typning fast ändå tiåta att oika kasser dear på ett gränssnitt utan att tvinga dem att ha gemensam superkass eer införa mutipet arv pubic interface Drawabe{ pubic void setcoor(coor c); pubic void setposition(point p); pubic void draw(window dw); ett interface impementeras av en kass pubic cass VisuaComponent impements Drawabe{

21 ... Interface pubic DrawabeRectange extends Rectange impements Drawabe{ private Coor c; private Point pos; pubic void setcoor(coor c) {this.c = c; pubic void setposition(point p){pos = p; pubic void draw(window dw){dw.drawrect(pos.x, pos.y, height, width); Ett interface kan utökas pubic interface Transformabe extends Scaabe, Rotateabe, Refectabe { eer innehåa konstanter interface Constants {static fina int Weekdays = 7; TextIO (och undantagshantering) import java.io.*; cass ReadCharTest { pubic static void main(string[] args) { System.out.printn("Java!"); // Läs ett tecken innan programmet avsutas try { int ch = System.in.read(); catch (IOException e) { // Ignorera

22 Med Ström Vi kan också äsa in mha en ström och buffert //Prompt System.out.print(">"); //Läs in BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); ine = reader.readline(); //Sen kan vi testa vad som matades in if (ine.equas("sut")) //...; Exempe: en egen sumptasgenerator pubic cass Randomizer { static fina int m = ; static fina int a = 9301; static fina int c = 49297; int seed = 1; pubic Randomizer(int seed) { this.seed = seed; pubic foat randomfoat() { seed = (seed * a + c) % m; return (foat)seed/(foat)m; pubic int randomint(int max) { return Math.round(max * randomfoat()); pubic static void main(string[] args) { Randomizer r = new Randomizer((int)new java.uti.date().gettime()); for(int i = 0; i < 10; i++) System.out.printn(r.randomInt(100));

23 Exempe: Person med subkass Student konstant med fina pubic cass Person { pubic static fina String unspecified = "OSPECAT"; protected String name, address, phone; pubic Person(String name, String address, String phone) { this.name = name; this.address = address; this.phone = phone; pubic Person(String name) {this(name, unspecified); pubic Person(String name, String address) {this(name, address, unspecified); anropa annan konstruktör pubic String tostring() {return "Namn: " + name + " Address: " + address + " Te: " + phone; pubic static void main (String args[]) { Person pers1 = new Person("Kae", "Osquars Backe 2"); Person pers2 = new Person("Oe"); System.out.printn("Person 1: " + pers1); System.out.printn("Person 2: " + pers2);

24 ...och subkassen Student... pubic cass Student extends Person { protected String emai; Student subkass ti Person pubic Student(String name, String address, String phone, String emai) { använd superkassens super(name, address, phone); konstruktör this.emai = emai; pubic Student(String name, String address, String phone) { this(name, address, phone, unspecified); pubic Student(String name) {this(name, unspecified); pubic Student(String name, String address) {this(name, address, unspecified); använd superkassens tostring() pubic String tostring() {return super.tostring() + " Emai: " + emai; pubic static void main (String args[]) { Student stud1 = new Student("Kae", "Osquars Backe 2"); Student stud2 = new Student("Oe"); Student stud3 = new Student("Kae", "Osquars Backe 2", "1234", "Kae@nada.kth.se"); System.out.printn("Student 1: " + stud1); System.out.printn("Student 2: " + stud2); System.out.printn("Student 3: " + stud3);

25 Exempe: Enkeänkad ista // en enkeänkad ista med metoder för att undersöka om objektet är sist, stoppa in änk samt ge avstånd ti sutet cass LinkabeObject{ pubic LinkabeObject ink; pubic Object vaue; pubic String tostring() {return vaue.tostring(); pubic LinkabeObject() {this(nu); pubic LinkabeObject(Object vaue) { ink = nu; this.vaue = vaue; pubic booean atend(){return ink == nu; pubic void insert(linkabeobject next) { ink = next; pubic int distancetoend(){ return atend()? 0 : 1 + ink.distancetoend(); test pubic cass LinkabeTestB{ pubic static void main (String args[]) { LinkabeObject root = new LinkabeObject("ROOT"); LinkabeObject current; current = root; for(int i=1; i < 5; i++) { // För att kunna använda en int som ett Object konstruerar vi en Integer LinkabeObject newlinkabe = new LinkabeObject(new Integer(i)); current.insert(newlinkabe); current = newlinkabe; current = root; whie(current!= nu) { System.out.printn(current + " distance to end: " + current.distancetoend()); current = current.ink;

26 Exempe: Dubbeänkad ista cass DoubeLinkabeObject{ pubic DoubeLinkabeObject next, prev; pubic Object vaue; pubic String tostring() {return vaue.tostring(); pubic DoubeLinkabeObject() {this(nu); pubic DoubeLinkabeObject(Object vaue) {next = prev = this; this.vaue = vaue; pubic void insert(doubelinkabeobject adoubelinkabeobject) { this.next.prev = adoubelinkabeobject; adoubelinkabeobject.next = this.next; adoubelinkabeobject.prev = this; next = adoubelinkabeobject; pubic int distanceto(doubelinkabeobject adoubelinkabeobject){ return this == adoubelinkabeobject? 0 : 1 + next.distanceto(adoubelinkabeobject); pubic int ength(){return 1 + next.distanceto(this); pubic cass DoubeLinkabeTest{ pubic static void main (String args[]) { DoubeLinkabeObject root = new DoubeLinkabeObject("ROOT"); DoubeLinkabeObject current; current = root; for(int i=1; i < 5; i++) { // För att kunna använda en int som ett Object konstruerar vi en Integer DoubeLinkabeObject newlinkabe = new DoubeLinkabeObject(new Integer( i)); current.insert(newlinkabe); current = newlinkabe; current = root.next; whie(current!= root) { System.out.printn(current + " distance to root: " + current.distanceto(root)); current = current.next; System.out.printn( "ength: " + root.ength());

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

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa 2203$( Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277 previous next Exempel: lampa Light1 #

Läs mer

OOMPA 2D1359 Föreläsning 3

OOMPA 2D1359 Föreläsning 3 OOMPA 2D1359 Föreläsning 3 Objektorienterad Modellering Programmering och Analys Objektorientering grunder-2 l Komponenter och beteende l CRC-kort Teknik för att beskriva och ta fram objekt, klasser och

Läs mer

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

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

Läs mer

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

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

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

Läs mer

Repetition av viktiga begrepp inom objektorienterad programmering

Repetition av viktiga begrepp inom objektorienterad programmering Repetition av viktiga begrepp inom objektorienterad programmering Tema: Arv, parameteröverföring, statiska attribut och metoder. Arv U 1. Betrakta följande klasser: public class Person { protected String

Läs mer

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

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

Läs mer

1 Repetition av viktiga begrepp inom objektorienterad programmering

1 Repetition av viktiga begrepp inom objektorienterad programmering Repetition av viktiga begrepp inom objektorienterad programmering 3 1 Repetition av viktiga begrepp inom objektorienterad programmering Tema: Arv, parameteröverföring, statiska attribut och metoder. Litteratur:

Läs mer

..arv Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur. 2203$ ) UHOlVQLQJ.

..arv Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur. 2203$ ) UHOlVQLQJ. Arv, polymorfi och gränssnitt Innehåll 2203$ ) UHOlVQLQJ Arv Subtyp, ersättbarhet Olika former av arv Polymorfi Abstrakta klasser och gränssnitt..arv Arv kan delas in i två huvudtyper Arv för specifikation

Läs mer

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

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

Läs mer

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

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).

Läs mer

DAT043 Objektorienterad Programmering

DAT043 Objektorienterad Programmering DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är

Läs mer

Objektorienterad programmering i Java

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

Läs mer

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

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/

Läs mer

Polymorfi. Objektorienterad och komponentbaserad programmering

Polymorfi. Objektorienterad och komponentbaserad programmering Polymorfi Objektorienterad och komponentbaserad programmering Polymorfi, mångtydighet Polymorfi innebär att en viss konstruktion kan exekveras på olika sätt Överlagring av metoder ger ett polymorft beteende

Läs mer

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 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

Läs mer

JAVA Mer om klasser och objektorientering

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

Läs mer

TENTAMEN OOP

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

Läs mer

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 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 :

Läs mer

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,

Läs mer

Laboration 1: Figurer i hierarki

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

Läs mer

OOMPA 2D1359 Föreläsning 8

OOMPA 2D1359 Föreläsning 8 OOMPA 2D1359 Föreläsning 8 Innehåll Arv, polymorfi och gränssnitt Arv Subtyp, ersättbarhet Olika former av arv Polymorfi Abstrakta klasser och gränssnitt - 1 - Arv l Arv är fundamentalt i objektorienterad

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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:

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

OOP Tenta

OOP Tenta Stockholms universitet sid 1 OOP OOP Tenta 2012-01-14 10.00 15.00 Avser kurserna DSK1:OOP och GES:OOP Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt

Läs mer

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

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

Läs mer

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

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

Läs mer

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 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

Läs mer

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

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äs mer

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

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

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Läs mer

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 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

Läs mer

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen , Introduktion till Java, dtaa98, dtea53 Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion

Läs mer

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

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

Läs mer

OOP Objekt-orienterad programmering

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

Läs mer

Objektorienterad Programmering (TDDC77)

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

Läs mer

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

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

Läs mer

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

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder

Läs mer

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011 Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011 Text inom [] avser kommentarer till rättningen, ofta sådant som många missuppfattat eller gjort fel på. Del A. Teoriuppgifter 1. Återanvändning:

Läs mer

TENTAMEN OOP

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

Läs mer

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public

Läs mer

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 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

Läs mer

TENTAMEN OOP

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

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

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

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 (

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

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 TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:

Läs mer

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

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å

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

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

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

Läs mer

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp

Läs mer

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

Programmering för språkteknologer II, HT2011. Rum Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Kursplan Mål Efter avslutad kurs skall studenten för att förtjäna betyget

Läs mer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många

Läs mer

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

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

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

1 Egna klasser. 1.1 En punkt-klass

1 Egna klasser. 1.1 En punkt-klass 1 Egna klasser Vi har bekantat oss med klasser genom att se hur vi kan använda olika klasser. I synnerhet klassen Scanner och klassen Math. För scannerklassen skapade vi en instans för att sedan utnyttja

Läs mer

Föreläsning 9: Arv och UML

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;

Läs mer

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDAA20/EDA501 Programmering LUNDS TEKNISKA HÖGSKOLA 1(4) Institutionen för datavetenskap Tentamen, EDAA20/EDA501 Programmering 2011 10 19, 8.00 13.00 Anvisningar: Denna tentamen består av fem uppgifter. Preliminärt ger uppgifterna

Läs mer

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

Konstruktion av klasser med klasser

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

Läs mer

Algoritmer. Två gränssnitt

Algoritmer. Två gränssnitt Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;

Läs mer

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 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

Läs mer

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

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

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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,

Läs mer

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

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

Läs mer

Klasshierarkier - repetition

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

Läs mer

Föreläsning 13 Innehåll

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?

Läs mer

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

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

Läs mer

Att använda Java SE JDK 6

Att använda Java SE JDK 6 Att använda Java SE JDK 6 Programmeringsspråket Java är utvecklat av det amerikanska företaget Sun Microsystems. Sun erbjuder gratis en utvecklingsmiljö för java-programmering, Java 2 SE (Standard Edition).

Läs mer

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Läs mer

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,

Läs mer

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 TDDE11, 725G90 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder

Läs mer

Tentamen. Grundläggande programmering i Java A 5p, DTAA32 2003-03-21

Tentamen. Grundläggande programmering i Java A 5p, DTAA32 2003-03-21 Mitthögskolan ITM Institutionen för Informationsteknologi och medier. Bertil Danielsson 060-14 86 82 Jan-Erik Jonsson 060-14 87 90 Tentamen i Java A Sida 1/6 Tentamen Grundläggande programmering i Java

Läs mer

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

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.

Läs mer

OOP Omtenta 2010-03-06 10.00 15.00

OOP Omtenta 2010-03-06 10.00 15.00 Stockholms universitet 1 (6) OOP OOP Omtenta 2010-03-06 10.00 15.00 Avser kurserna: DSK1:OOP GES:OOP ID1013 Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv

Läs mer

Språkkonventioner och redigering av tal.

Språkkonventioner och redigering av tal. Språkkonventioner och redigering av tal. Kap J3-1 Konventioner för olika språk hanteras med hjälp av klassen java.util.locale Ett objekt i denna klass beskriver en lokal konvention. Lokala konventioner

Läs mer

Laboration 1 - Grunderna för OOP i Java

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

Läs mer

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20. Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:

Läs mer

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid: Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-08-24, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:

Läs mer

Lösningsförslag tentamen FYTA11 Java

Lösningsförslag tentamen FYTA11 Java Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer

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 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:

Läs mer

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

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

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 2017-10-23 Skrivtid: 0800 1300 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

Läs mer

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-01-10 Skrivtid: 8.00 13.00 Hjälpmedel: Java-bok Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

OOP Tentamen

OOP Tentamen DVS SU/KTH 1 (6) OOP OOP Tentamen 2010-01-15 15.00 20.00 Avser kurserna: DSK1:OOP GES:OOP ID1013 Anvisningar Skriv namn och personnummer på varje inlämnat blad. Påbörja varje ny uppgift på nytt blad. Skriv

Läs mer

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004 Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 2 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin, 2018 Outline Emacs Introduktion till Objektorienterad Programmering Introduktion till Java Variabler

Läs mer

DAT043 - Föreläsning 7

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

Läs mer

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid: Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex

Läs mer

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation

Läs mer

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

Läs mer

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid: Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-08-30, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:

Läs mer

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning. Introduktion Upplägg Kursen heter konstruktion, ej design eller formgivning. det handlar främst om att lära sig att bygga gränssnitt som är sunda den är praktiskt orienterad; vetenskapliga teorier finns,

Läs mer