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

Relevanta dokument
Objektorienterad Programmering (TDDC77)

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

Lösningsförslag övning 2.

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

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

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

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

Objekt och klasser - Introduktion

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

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

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

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

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.

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

JAVA Mer om klasser och objektorientering

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

DAT043 - Föreläsning 7

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

OOP Objekt-orienterad programmering

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Laboration 1 - Grunderna för OOP i Java

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

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.

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

TDDC77 Objektorienterad Programmering

F4. programmeringsteknik och Matlab

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

Classes och Interfaces, Objects och References, Initialization

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

OOP Objekt-orienterad programmering

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Chapter 4: Writing Classes/ Att skriva egna klasser.

TENTAMEN OOP

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

Objektorienterad Programmering DAT043

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Java, klasser, objekt (Skansholm: Kapitel 2)

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

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

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

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

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

Klasshierarkier - repetition

Föreläsning 7: Objektorienterad programmering - introduktion

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

Objektorienterad programmering Föreläsning 5

Föreläsning 5-6 Innehåll

Enkla variabler kontra referensvariabel

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Objekt, Klasser, Paket m. m.

(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

Objekt och referenser

Sammanfattning och repetition utgående från typiska tentamensuppgifter

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Transkript:

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, datatyper, typkonvertering I Logiska och matematiska uttryck I Metoder-returvärde och parametrar I Villkorssatser if/else I Loopar, for, while, do-while I Arrayer, String Vad händer i resten av kursen: Outline I Klasser och objekt (classes and objects) I Inkapsling och arv (encapsulation and inheritance) I Åsidosättning och överlagring (overriding and overloading) I Abstrakta klasser och gränssnitt (abstract classes and interfaces) I Samlingar (collections), generics I Uppräkningar (enumerations) I Undantag (exceptions) Klasser och Objekt Instansiering

Objekt Ett objekt I Identitet : Typ och referens I Tillstånd: Variabler I Tjänster: Metoder Tillstånd Identitet Tjänster Ett objekt Klasser av objekt I Varje objekt som skapas måste höra till en klass Variabler Typ och referens Metoder I Klassen definierar hur objekten fungerar, det vill säga deras beteende. Lite som en mall för objekten I En klass skapas genom att man definierar den. Varje klass i en separat fil. I Klassens namn blir objektens typ /* Greeter. java * Enkel Klass som representera en person som * hä lsa med ett specifikt meddelande */ class Greeter { private String message ; public Greeter ( String msg ){ message = msg ; private String speak (){ return message + "!!! ";

Objekt Pac-man I Ett objekt kan även kallas instans (förekomst) av en klass. I När man skapar ett objekt som tillhör en viss klass så säger man att man instantierar klassen I Varje objekt tar sina egna kopior av variablerna som definierades i klassen. Dessa bestämmer objektets tillstånd I Ett objekt skapas med nyckelordet new /* Driver. java * Deklarera och anv ä nda sig av Greeter programmet */ class Driver { public static void main ( String [] args ){ Greeter person = new Greeter (" hej "); Greeter glad = new Greeter (" hejhej "); // System.out. println (" person Greeter says : " // + person. message ); System.out. println ("glad Greeter says : " + glad. speak ()); Exampel Exampel import java. util. Scanner ; class Game { static Scanner scan = new Scanner ( System. in ); static Ghost greenghost = new Ghost (" green ", 1, 4); static Ghost blueghost = new Ghost (" blue ", 0, 3); public static void main ( String [] args ) { String command ; do{ // ask the ghosts to update there coordinates greenghost. update (); blueghost. update (); // print the new coordinates System. out. println ( greenghost. print ()); System. out. println ( blueghost. print ()); // check if the user wants to quit System. out. print ("\ nwrite \"c\" if you want to continue : "); command = scan. next (); while ( command. equalsignorecase ("c" )); class Ghost { String name ; int col =0, row =0; public Ghost ( String name, int _col, int _row ){ this. name = name ; col = _col ; row = _row ; public void update (){ col = ( this. col ==9? col -1: col +1); row = ( row ==9? row -1: row +1); public String print (){ return name + ": (" + row + ", " + col + ")";

Static Två sorter variabler: hitta bra exempel***** I Tidigare har vi skrivit static lite överallt I Från och med nu så kommer vi att använda oss mycket mindre av static I Till exempel när vi skriver main-metoden I För att förstå vad nyckelordet static innebär behöver man veta att det i själva verket finns ytterligare ett sätt att indela variabler i två kategorier som anknyter till objekt och klasser I De två nya kategorierna kallas instans och klassvariabler I Tidigare gjorde vi uppdelningen primitiva typer och referenstyper. Detta har ingenting med instans och klassvariabler att göra Instansvariabler Klassvariabler I En instansvariabel är individuell för varje instans av en klass I Det är denna sorts variabler ni i fortsättningen ska använda i nästan alla fall I Deklareras utan nyckelorder static class Test1 { int a = 0; void use (){ System. out. printline (a); I En klassvariabel är gemensam för alla instanser av en klass. I Denna sorts variabler ska ni undvika I Deklareras med nyckelorder static class Tests2 { static int a = 0; void use (){ System. out. printline ( Test2.a);

Funktioner då? Exempel? I Principen är densamma för funktioner I Funktioner deklarerade utan static hör samman med (och opererar på) enskilda instanser, anropas med objekt.funktionsnamn() I Funktioner deklarerade med static hör samman med (och opererar på) klassen, anropas med KlassNamn.funktionsNamn() I Detta innebär i förlängningen att funktioner deklarerade med static inte kan komma åt variabler deklarerade utan static eftersom det inte är specificerat vilken instans instansvariabel som avses I Kan du hitta på några egna exempel på klassmetoder och instansmetoder du använt? I Klassmetoder Math.max(), Math.round(), alla era lincalcmetoder I Instansmetoder strängen.charat(), objektet.equals(),... Outline Att instansiera en klass Klasser och Objekt Instansiering I Man instansierar (skapar ett objekt av) en klass genom att anropa en konstruktor I Detta sker genom att använda nyckelordet new följt av klassnamn och parameterlista I Det kan finnas flera konstruktorer med olika parameterlistor I Exakt en instans skapas för varje gång man kör konstruktorn Greeter glad = new Greeter (" hejhej "); Greeter compis = new Greeter (" tjaba ");

Objekt Konstruktorer Greeter glad = new Greeter (" hejhej "); Greeter compis = new Greeter (" tjaba "); Greeter Greeter hejhej speak() tjaba speak() I En konstruktor saknar returtyp och heter samma som klassen I Om ingen konstruktor skrivs så skapas automatiskt en så kallad standardkonstruktor som inte tar några argument I Om man skapar en egen konstruktor så skapas inte standardkonstruktorn automatiskt I Man kan ha godtyckligt många konstruktorer så länge de har olika parameterlistor I Detta gäller generellt för alla funktioner och kallas överlagring (tas upp senare) glad compis Referenser Flera referenser - samma objekt I Objekt är referenstyper,det betyder att när man skapar ett objekt egentligen man får en referens tillbaka I Gör man sedan en tilldelning eller jämförelse så är det referensen som jämförs Greeter... jag heter John... speak() Greeter john = new Greeter (" God morgon, jag heter John Smith!"); Greeter johnsmor = john ; Greeter johnsfar = johnsmor ; johnsmor john johnsfar

Outline Klasser och Objekt Instansiering I I Java finns fyra åtkomstnivåer för variabler och funktioner I public : alltid synlig I protected: tas upp senare I default (package): tas upp senare I private: endast synlig inom klassen I i den här kursen håller vi oss till public och private grundregel Outline I Deklarerar alla variabler som private I Deklarerar alla funktioner som public I Detta bettyder att om man vill kunna läsa/skriva en variabel från en annan klass så måste man göra funktioner som utför det. Detta kallas för getters och setters och eclipse kan generera den automatiskt I Det finns undantag, men dessa kommer ni att lära er att känna igen så småningom I Konstruktorer bör vara deklarerade som public Klasser och Objekt Instansiering

Ett objekt class { private double memory, result ; public double add ( double a, double b){ result = a + b; return result ; public String add ( double c){ return " hejhej "; Identitet public double getresult (){ return result ; public void setresult ( double _r ){ result = _r; Tillstånd Tjänster public void store (){ memory = result ; Ett objekt Använda kalkylatorn calc = new (); calc. add (2.3, 5); memory, result add(), store()

Flera konstruktörer till Outline public class { private double memory, result ; public () { result = 0; memory = 0; public ( double loadedmem ){ result = 0; memory = loadedmem ;... Klasser och Objekt Instansiering Öva - gör om stacken som en klass I Ibland vill man behandla data på ett sätt som inte riktigt stämmer med de primitiva datatyperna. I Man måste då kombinera ihop en ny datatyp som är anpassad för det man faktiskt vill göra med den I Ett exempel på detta är stacken som ni implementerade till lincalc I En abstrakt datatyp är ofta en kombination av variabler (tillstånd) och funktioner (tjänster)... I... det låter som att abstrakta datatyper och klasser har en del gemensamt I Skapa en klass StringStack som kan lagra 100 strängar I Strängarna ska lagras i en Array som det inte ska gå att ändra i så att stacken hamnar i ett otillåtet tillstånd I Ska klara operationerna push, pop och isempty

StringStack public class StringStack { private static int MAX = 100; private String [] data = new String [ MAX ]; private int pos = 0; public boolean isempty (){ return pos == 0; public void push ( String s){ data [ pos ++] = s; public String pop (){ return data [-- pos ];