JAVA Mer om klasser och objektorientering

Relevanta dokument
Laboration 1 - Grunderna för OOP i Java

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

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

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

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

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

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

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

Lösningsförslag övning 2.

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

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

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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.

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

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

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

TENTAMEN OOP

DD1342 Programkonstruktion för F1,

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

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

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

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

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

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

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

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

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

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

JAVAUTVECKLING LEKTION 11

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

Malmö högskola 2008/2009 CTS

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Objektorienterad programmering i Java

Tentamen i Grundläggande programmering STS, åk 1 lördag

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

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

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Objektorienterad Programmering DAT043

Objekt och klasser - Introduktion

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

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Objektorienterad programmering Föreläsning 5

Föreläsning 5-6 Innehåll

1 Egna klasser. 1.1 En punkt-klass

OOP Objekt-orienterad programmering

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

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Klasser och objekt. Henrik Johansson. August 20, 2008

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

TUTORIAL: KLASSER & OBJEKT

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

Objektorienterad programmering i Java

Övningar Dag 2 En första klass

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

Klasser och Objekt i Java. C++ använder beteckningarna datamedlem resp. medlemsfunktion. Klassdefinition. Exempel: Variabler

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

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

JAVAUTVECKLING LEKTION 7

TENTAMEN OOP

Föreläsning 3-4 Innehåll

LÖSNINGSFÖRSLAG TENTAMEN

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

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

OOP Tentamen

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

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

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Tentamen i Grundläggande programmering STS, åk 1 fredag

Dugga i Grundläggande programmering STS, åk

LyckaTill önskar Anna

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

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.

Tentamen i Programmeringsteknik I

TENTAMEN OOP

Malmö högskola 2007/2008 Teknik och samhälle

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

OOP Omtenta

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

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

Tentamen i Grundläggande programmering STS, åk 1 fredag

Tentamen OOP

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen i Programmering

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

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

Transkript:

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 program som vill utnyttja någon klass i paketet. Man måste ställa om i autoexec.bat så Java-kompilatorn och Java-interpretatorn vet var de finns. Tyvärr kan vi inte trixa med det i skolan. Det kan även vara lite knöligt att få till det även hemma. Men vi ska känna till möjligheten. Läs s 85-90 i boken. Inkapsling - synlighet Vi kan styra om våra klasser, variabler(medlemmar) och funktioner(metoder) ska vara synliga från andra klasser. Det gör vi genom att sätta dom som private, protected, public. Se sid 62-63 i boken. Konstruktorer - initiering av objekt Det finns en speciell typ av metoder som kallas konstruktormetoder, som anropas varje gång ett nytt objekt av den aktuella klassen skapas. Konstruktormetoder har ALLTID samma namn som klassen de tillhör. Konstruktormetoder är mycket praktiska eftersom de kan tvinga användaren att bifoga t.ex. några värden för att överhuvudtaget tillåtas skapa ett objekt. Först går vi tillbaks till följande klassdefinition (som vi känner igen från förra lektionen): class Elev int provpoäng; //variabel String elevnamn; //variabel void skrivut() //metod System.out.println("Namn: " + elevnamn + " Poäng: " + provpoäng); Lägg till följande konstruktormetod någonstans mellan klamrarna som ramar in klassen Elev. Lämplig plats är efter variablerna och före befintliga metoder. Elev(int pp, String enamn) provpoäng = pp; //konstruktor2 Notera att om man inte lägger till någon egen konstruktormetod lägger Java automatiskt till en egen tom metod för att ändå möjliggöra konstruktion av objektet. Denna "default"-konstruktor kan vi omdefiniera, dessutom kan vi överlagra med flera konstruktorer (som har olika antal argument eller olika typer av argument. Först omdefiniering av default-konstruktorn: Elev() provpoäng = 0; elevnamn = "NoName"; Sen en ytterliggare överlagring av konstruktorn: Elev(String enamn) provpoäng = 0; // initieras till noll(0) Sida 1

Test av klassen Elev Börja med att skapa filen TestaElev.java i samma bibliotek som Elev.class befinner sig i. För att undersöka klassen Elev lite närmare skapar vi ytterligare en liten klass som vi döper till TestaElev. Skriv in följande rader i filen TestaElev.java. class TestaElev //En klass vid namn TestaElev skapas. public static void main(string args[]) //Skapa objekt av typen Elev. Student1.skrivut(); //student1 s namn och resultat skrivs ut Student2.skrivut(); //student1 s namn och resultat skrivs ut Student3.skrivut(); //student1 s namn och resultat skrivs ut (Notera att texten efter snedstrecken (//) inte behöver skrivas in eftersom de bara är kommentarer.) Kompilera och kör programmet. Försök att lista ut hur utskrifterna kommer att bli. Här kommer koden till programmet: import java.io.*; class Elev int provpoäng; String elevnamn; Elev() provpoäng = 0; elevnamn = "NoName"; //OBS!! För att komma åt in och utmatnings-metoder Elev(String enamn) provpoäng = 0; // initieras till noll(0) Elev(int pp, String enamn) provpoäng = pp; void skrivut() class TestaElev public static void main(string args[]) //Skapa objekt av typen Elev. student1.skrivut(); //student1 s namn och resultat skrivs ut student2.skrivut(); //student2 s namn och resultat skrivs ut student3.skrivut(); //student3 s namn och resultat skrivs ut Sida 2

Överlagring av metoder På samma sätt som vi kan överlagra konstruktorer kan vi överlagra metoder. Dvs metoderna har samma namn men olika antal parametrar och/eller olika typer av argument.(sid 81-82 i boken.) I vårt exempel ovan kan vi t ex lägga till en funktion skrivut med ett heltalsargument enligt följande: void skrivut(int x) for (int i=1; i<=x; i++) Inte så praktiskt kanske men det duger för att visa överlagring utan att vi behöver utöka med nya metoder!! Vår testklass utökas lite: class TestaElev public static void main(string args[]) //Skapa objekt av typen Elev. student1.skrivut(); //student1 s namn och resultat skrivs ut student2.skrivut(); //student2 s namn och resultat skrivs ut student3.skrivut(); //student3 s namn och resultat skrivs ut student1.skrivut(4); //student1 s info skrivs ut 4ggr (Notera att texten efter snedstrecken (//) inte behöver skrivas in eftersom de bara är kommentarer.) Kompilera och kör programmet. Försök att lista ut hur utskrifterna kommer att bli. Sida 3

Här kommer koden till hela programmet: import java.io.*; class Elev int provpoäng; String elevnamn; Elev() provpoäng = 0; elevnamn = "NoName"; //OBS!! För att komma åt in och utmatnings-metoder Elev(String enamn) provpoäng = 0; // initieras till noll(0) Elev(int pp, String enamn) provpoäng = pp; void skrivut() void skrivut(int x) for (int i=1; i<=x; i++) class TestaElev public static void main(string args[]) //Skapa objekt av typen Elev. student1.skrivut(); //student1 s namn och resultat skrivs ut student2.skrivut(); //student2 s namn och resultat skrivs ut student3.skrivut(); //student3 s namn och resultat skrivs ut student1.skrivut(4); //student1 s info skrivs ut 4ggr Sida 4

Begreppet static - klassvariabler, klassmetoder Det reserverade ordet static talar om att variabler och metoder är klassvariabler respektive klassmetoder. Vi känner igen det genom att vår main-metod är av typen static. Med det menas att de skapas en gång och tillhör själva klassen. Varje objekt som skapas av klassen kommer då åt denna gemensamma variabel respektive metod. Dvs flera objekt från en klass kan ha en gemensam variabel. Vår main-metod, den finns där och tillhör klassen utan att vi måste skapa något objekt av klassen. (Sid 91-97 i boken.) Ex: package testastatic; import java.io.*; class Nr static int antal; int nummer; Nr(int x) antal++; nummer = x; //OBS!! För att komma åt in och utmatnings-metoder //klassvariabel //variabel i varje nytt objekt //konstruktor void skrivut() //metod System.out.println("Nr: "+nummer+" Antal: "+antal); class TestaNr public static void main(string args[]) Nr tal1 = new Nr(7); Nr tal2 = new Nr(3); Nr tal3 = new Nr(5); tal1.skrivut(); tal2.skrivut(); tal3.skrivut(); Standardklassen Math Se sid 98-99 i boken. Sida 5

Övningar Övning 1 Tiita på exempelprogrammen i denna lektion, mer om klasser och objektorientering, och försök förstå vad som händer i programmet rad för rad. Eventuellt skriv av och kör. Övning 2 Utöka din klass Boll från förra lektionen. Skapa en klass Boll enligt nedan, skapa sen en klass TestaBollar som utnyttjar klassen Boll, där den skapar en boll, sätter färg och radie på den samt skriver ut info om aktuell boll. Skriv en egen default-konstruktor som initierar radie till 0 färg till tom sträng. Skriv också en konstruktor där du skickar med värdena som argument till klassmedlemmarna radie och färg. class Boll int radie; String färg; //Plats för dina konstruktorer //---------------------------- void skrivutbollinfo( ) System.out.println( Bollfärg : +färg+ Radie = +radie); Skriv nu klassen TestaBollar som innehåller main-funktionen och kör sen applikationen. Skalet till TestaBollar: public class TestaBollar public static void main(string args[]) //skapa minst tre bollar //sätt färg och radie på de bollar som inte har några värden!! //skriv ut info om bollarna Övning 3 Utöka ovanstående Boll-klass med flera skrivutinfo-metoder. De ska vara överlagrade. Dvs ha samma namn. Ändra i testklassen så att du använder samtliga skrivutinfo-metoder. Övning 4 Skapa en klassvariabel i klassen Boll som håller reda på hur många bollar som finns "just nu" när programmet körs. Skapa en metod för att "hämta" värdet. Varför inte göra den som en klassmetod!! Testa om det fungerar. Övning 5 Skriv ett program som skriver ut i 4 kolumner följande: heltalet, roten ur heltalet, heltalet i kvadrat, talet e upphöjt i heltalet. Skapa en tabell genom att skriva ut ovanstående för heltalen 1 till 10. Övning 6 Utgå från programmet i övning 4. Sätt private framför klassmedlemmarna och public framför konstruktorer och metoder. Försök få programmet att fungera. Eventuellt måste du skriva några ytterliggare metoder!! Läxa: Läs noggrant igenom detta häfte. Läs s 81-100. Läs även 101-120 om Objektorienterad programutveckling. Gör klart övningarna. Hitta på ett eget exempel där du utnyttjar det du lärt dig. Sida 6