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

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

Hur ser ett Java-program ut?

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

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

Konstruktion av klasser med klasser

Java, klasser, objekt (Skansholm: Kapitel 2)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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 )

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

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

Klasshierarkier - repetition

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

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

Enkla variabler kontra referensvariabel

Malmö högskola 2008/2009 CTS

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

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

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

Objekt och klasser - Introduktion

Objekt och referenser

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

JAVA Mer om klasser och objektorientering

TDDD78 Viktiga begrepp, del 2

Exempel på användning av arv: Geometriska figurer

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.

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

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

Föreläsning 13 Innehåll

Del A (obligatorisk för alla)

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Mer om klasser och objekt

1 Egna klasser. 1.1 En punkt-klass

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

DAT043 - Föreläsning 7

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

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

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

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

Objekt, Klasser, Paket m. m.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 3-4 Innehåll

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

OOP Objekt-orienterad programmering

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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

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

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

Lösningsförslag övning 2.

Laboration 3, uppgift En klass för en räknare

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Objektorienterad Programmering DAT043

Modeller, Objekt och Klasser

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

Enkla variabler kontra referensvariabel

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

Dynamisk bindning och polymorfism

Tentamen. Lösningsförslag

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

Laboration 1 - Grunderna för OOP i Java

Objektorienterad programmering i Java

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

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Grundläggande programmering med C# 7,5 högskolepoäng

Del A (obligatorisk för alla)

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Top-Down Design Parameteröverföring

Typkonvertering. Java versus C

JAVAUTVECKLING LEKTION 11

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

OOP Objekt-orienterad programmering

Lösningsförslag tentamen FYTA11 Java

Föreläsning 6. Top-Down Design Parameteröverföring

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

Föreläsning 6. Mer om klasser och objekt. Enkla variabler kontra referensvariabel. Omslagsklassen Integer. Referensvariabler

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Classes och Interfaces, Objects och References, Initialization

Föreläsning REPETITION & EXTENTA

Tentamen i Programmeringsteknik I, ES,

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

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

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

Transkript:

public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private får bara anropas av metoder i den egna klassen. Ett attribut som är private får bara avläsas och ändras från metoder i den egna klassen. Obs: private inte skyddar mot access från andra objekt i samma klass. Anm: Det nns två skyddnivåer till: protected och package (inget reserverat ord, alltså) mer om dessa senare. (2008-09-29 7.1 )

Varför public och private Två viktiga principer: 1. Man skall inte behöva veta detaljer i implementationen av en klass för att kunna använda den. 2. En klass bör kunna garantera att dess status (dvs dess värden på attributen) är konsistenta. För att detta skall vara möjligt så måste alla ändringar av status kontrolleras. För att uppnå detta måste man förhindra okontrollerad access till attributen. Det anses vara en god stil att göra alla attribut privata och använda selektorer (get-metoder) för att avläsa dem och mutatorer (set-metoder) för att sätta dem men ingen regel utan undantag och man måste verkligen se till att mutatorerna sätter rimliga värden. (2008-09-29 7.2 )

Skapande av objekt Objekt skapas med operatorn new följt av klassnamnet. När objektet skapas sker följande: 1. Alla attribut får defaultvärden (0, 0., '\0', false, null) 2. Eventuella tilldelningar i deklarationen av attributen utförs 3. Satserna i en konstruktor genomlöps. Om det inte nns någon konstruktor i en klass tillhandahåller java en parameterlös konstruktor (ofta kallad default-konstruktor) Om det nns en eller era konstruktorer väljes den som matchar argumenten i antal och typ. I detta fall tillhandahåller inte systemet någon parameterlös konstruktor. (2008-09-29 7.3 )

Exempel: klassen Point // Punkt i planet public class Point { private double x; private double y; public Point( double x ) { this.x = x; // Konstruktor public Point( double x, double y ) { this.x = x; this.y = y; // Konstruktor public double getx() { return x; // Selector public double gety() { return y; // Selektor (2008-09-29 7.4 )

Frågor om klassen Point Kan händer om vi skriver Point p = new Point(1.)? Vad händer om vi skriver Point p = new Point()? Skriv en mutatorer void moveto(int x, int y) som yttar punkten till en ny position. Vill man ha en sådan operation? Vad skulle vi förlora på att göra attributen publika? Hur skulle vi göra om vi vill ha polära koordinater? (2008-09-29 7.5 )

Exempel: klassen Circle public class Circle { private Point center; private double radius; public Circle( Point center, double radius ) { this.center = center; this.radius = radius; public Circle( double radius ) { center = new Point(0.,0.); this.radius = radius; public void scale(double sf) { radius = sf*radius; public void moveto(double x, double y) { center.moveto(x,y); // Samt diverse andra metoder... (2008-09-29 7.6 )

Synpunkter på klassen Circle Kontrollerar inte att det är vettiga värden på attributen radius Vad händer vid följande kod Point p = new Point( 0.5, -3.5 ); Circle c1 = new Circle( p, 1. ); Circle c2 = new Circle( p, 2. ); c1.moveto(-1., -2.); (2008-09-29 7.7 )

Förbättring (kanske... ) Skriv om konstruktorn för Circle-klassen: eller public Circle( Point center, double radius ) { this.center = new Point(center.getx(), center.gety()); this.radius = radius; public Circle( Point center, double radius ) { this.center = center.copy(); this.radius = radius; med metoden copy i klassen Point; public Point copy() { return new Point(x,y); (2008-09-29 7.8 )

Sammanfattning om referenser När ett objekt skapas med new returneras en referens (dvs en pekare eller adress) till det skapade objektet. Deklarationen Die t; gör inte t till en Die utan till en referens till en Die Referenser kan tilldelas till referensvariabler (av rätt typ) och jämföras med == och!= Instansvariabler av referenstyp initieras till null this är en referens till det egna objektet (2008-09-29 7.9 )

Sammanfattning om referenser forts Flera referenser kan peka till samma objekt. Blir resultatet av tilldelningen t1 = t2; Observera att relationsoperatorerna == och!= jämför adresserna dvs som de står för fysiskt samma objekt inte huruvida objekten ser lika ut Om ingen referens till ett objekt är det borttappat. Borttappade objekt samlas ihop automatiskt av skräpsamlaren. (2008-09-29 7.10 )

Sammanfattning om referenser forts Referenser kan skickas som parametrar till en metod (objekt kan naturligtvis inte skickas) Om objektet förändras av metoden så har det eekt Man kan säga att objekten existerar globalt och är åtkomliga överallt där man har en referens till dem En metod kan returnera referenser som funktionsvärden (2008-09-29 7.11 )

Jämförelser av objekt igen Igen: Relationsoperatorerna == och!= jämför bara referenserna! Alla objekt har en metod equals() som jämför objekt innehållsmässigt byte för byte I regel denierar man dock en egen equals() Referenser kan inte jämföras storleksmässigt men man kan naturligtvis deniera egna metoder för att jämföra objekt (2008-09-29 7.12 )

Exempel på tänkbara jämförelsemetoder i Circle public class Circle { private Point center; private double radius; //... en massa metoder public boolean equals(circle c) { return Math.abs(radius-c.radius) < 1.e-10; public boolean identical(circle c) { return (radius==c.radius) && center.equals(c.center); (2008-09-29 7.13 )

Exempel på jämförelsemetoder forts public int compareto(circle c) { if ( radius == c.radius ) return 0; else if (radius < c.radius) return -1; else return 1; public boolean lessthan(circle c) { return radius < c.radius; (2008-09-29 7.14 )

Klassvariabler och klassmetoder Hittills har alla dataattribut varit instans-variabler dvs varje objekt har sin egen upplaga av dessa Man kan också ha klass-variabler som är gemensamma för alla objekt i klassen vilket anges med static En klassvariabel kan referas på samma sätt som vanliga attribut men vanligen genom klassnamn.variabelnamn Det går också att ha klass-metoder som alltså kan användas utan frikopplat från objekten (ex Math.sin() och main()) En klassmetod kan inte referera objektattribut och ej heller anropa andra objektmetoder utan att gå via en objektreferens (2008-09-29 7.15 )

Exempel public class Circle { private Point center; private double radius; private int id; // "cirkelnummer" private static int ncircles = 0; public Circle( Point center, double radius ) { this.center = center; this.radius = radius; id = ++ncircles; public static void report() { System.out.println( "Antal skapade cirklar: " + ncircles ); public static void main(string [] args) { Circle c; for ( int i = 1; i<=10; i++ ) c = new Circle( new Point( 10*i, 15*i ), 5*i ); report(); (2008-09-29 7.16 )