Föreläsning 5: Att använda klasser & objekt

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Metoder i java Det finns två typer av metoder i java
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Klasser och objekt Klasser, objekt och instansvariabler
Programmering B PHP Lektion 2
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
Gruppövning Applikationsprogramering Klassuppdelning Loose Coupling Model View Controller Inversion of Control Layout med Swing JSplitPane Mouse-over Events.
Föreläsning 2 Programmeringsteknik DD1310
Föreläsning 3: Booleans, if, switch
Föreläsning 6: Metoder och fält (arrays)
Föreläsning 4: for, while, do-while
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Innehåll: Arrays Arraylists For loops For-each loops
Föreläsning 2: Typer, klasser, tilldelning
Föreläsning 9: Arv och UML
Kan du begreppen? Para ihop rätt begrepp med rätt beskrivning. Algoritm Precis Program Är ett annat ord för exakt, tydlig eller noggrant. Är klara och.
Algoritmer och datastrukturer, förel. 1
Presentationens avskrift:

Föreläsning 5: Att använda klasser & objekt TDA 545: Objektorienterad programmering Magnus Myréen Chalmers, läsperiod 1, 2015-2016

I denna (och nästa) föreläsning Läsanvisning: kap 2 & 13 meddelanden och metoder informationsdöljande och inkapsling skapa och använda färdiga objekt ! primitiva variabler kontra objektvariabler 3 tester på likhet metoder fält (arrays)

Meddelande och metoder Man kopplar ihop funktionalitet genom att sända meddelanden: fiasButik.skickaBukett(värde, adress) ett objekt - mottagare av meddelandet meddelandet vad objektet skall göra argument dvs indata Om objektet kan ”skickaBukett” så är det dess ansvar att utföra åtgärden – klienten vet inte hur objektet utför sysslan (informationsdöljande!). Observera också att olika objekt kan tolka meddelandet olika: - ringer sin vän minFru.skickaBukett(värde, adress) minBror.skickaBukett(värde, adress) - ringer en butik

Informationsdöljande och inkapsling Informationsdöljande och inkapsling stödjer 2 sätt att se på samma komponent och bygger på separation av gränssnitt (interface) och implementation: Interface vyn vad kan utföras Implementations vyn hur görs det Beteendet är ”inkapslat” i klassen. Informationsdöljandet sker med ”private”. man kan enkelt dela upp arbetet man kan byta ut innehållet utan att det märks utifrån (om man fortfarande uppfyller specifikationen) återanvändning förenklas Hur vet man att det finns en skickaBukett? Man tittar i specifikationen.

Att deklarera objekt Man deklarerar (dvs skapar) ett objekt(" -handtag") genom att associera ett variabelnamn med en klass. Rectangle rect; klassnamn dvs typnamn variabelnamn En referensvariabel skapas med innehållet "null" som kan innehålla adressen till en instans av klassen. namn: rect typ: Rectangle null variabel, dvs en minnesplats

Att skapa objekt Man skapar själva objektet (en instans av klassen-man ”instansierar”) genom att anropa new som anropar klassens konstruktor (vars namn är klassens namn). referensvärde som pekar på det nya objektet konstruktor skapar objektet rect = new Rectangle(…); indata, hurdan Rect skall vi ha? Exempel: rect = new Rectangle(5,10,20,30); new visar att vi skapar nytt objekt namn: rect typ: Rectangle variabel, dvs en minnesplats x är 5, y är 10, width är 20, height är 30 ett objekt, dvs instans referensvärde

Vår modell av verkligheten! Abstraktionen Ett rektangelobjekt är alltså inte ett rektangulärt föremål! Det är ett objekt som innehåller fyra tal som beskriver rektangeln. Vår modell av verkligheten! x, y är övre vänstra hörnet Klassen Rectangle finns i paketet java.awt i Javas API. x är 5, y är 10, width är 20, height är 30 ett objekt, dvs instans referensvärde variabel, dvs en minnesplats namn: rect typ: Rectangle

typen och namnet på parametern Använda objekt Det gör man genom att anropa deras metoder: ”skicka ett meddelande”, ”ställ en fråga”, eller ”ge ett kommando” metodens namn En Rectangle har tex metoden typen av returvärdet typen och namnet på parametern Checks whether or not this Rectangle entirely contains the specified Rectangle r. boolean contains(Rectangle r)

Använda objekt En Rectangle har tex metoden Rectangle a = new Rectangle(...); Rectangle b = new Rectangle(...); boolean con = a.contains(b); implicit parameter explicit parameter En Rectangle har tex metoden Checks whether or not this Rectangle entirely contains the specified Rectangle r. boolean contains(Rectangle r)

Använda objekt Hur vet man att det finns en contains metod? Svar: man tittar i Javas API (Application Programmers Interface) där alla specifikationer finns. Vad är egentligen en specifikation? En Rectangle har tex metoden Checks whether or not this Rectangle entirely contains the specified Rectangle r. boolean contains(Rectangle r)

En kö

Specifikation / Implementation

Specifikation / Implementation

Exempel: att flytta en rektangel void translate(int x, int y) Translates this Rectangle the indicated distance, to the right along the x coordinate axis, and downward along the y coordinate axis. Ska vi skriva ett program som använder translate? Hur gör vi det?

Exempel: att flytta en rektangel skapar en ny rektangel import java.awt.Rectangle; public class MoveTester { public static void main(String[] args){ Rectangle box = new Rectangle(5, 10, 20, 30); // Move the rectangle box.translate(15, 25); // Print information about the // moved rectangle System.out.println("After moving,the top-left corner is:"); System.out.println(box.getX()); System.out.println(box.getY()); } anropar translate metoden skriver ut var den flyttade rektangeln finns After moving, the top-left corner is: 20 35

Import satsen import java.awt.Rectangle;

objektvariabler och primitiva variabler variabel, dvs en minnesplats Det är skillnad på int n = 25; int m = n; namn: n typ: int 25 namn: m typ: int 25 och Rectangle box = new Rectangle(5,10,20,30); Rectangle box2 = box; variabel, dvs en minnesplats x är 5, y är 10, width är 20, height är 30 ett objekt, dvs instans namn: box typ: Rectangle namn: box2 typ: Rectangle

3 tester på likhet i Java Två objekt är lika om dom innehåller samma “tillstånd” dvs om deras instansvariabler är lika. Två objekt är identiska om dom är samma objekt dvs om dom pekar på samma minnesutrymme. String str1 = "Kalle"; String str2 = "Hobbe"; Test på identitet: if (str1 == str2) { ... kommer den ena strängen före (<0) eller efter (>0) i en ordbok? Eller är de precis på samma ställe (0). Test på likhet: if (str1.equals(str2)) { ... Test på ‘storlek’: if (str1.compareTo(str2) == 0) { ...

Test på likhet, forts. Svar: String str1 = "Hej"; String str2 = str1; System.out.println(str1 == str2); System.out.println(str1 == str3); System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); System.out.println(str1.compareTo(str2)); System.out.println(str1.compareTo(str3)); true false

Vad händer om vi skriver “Kalle” i stället? Test på likhet, forts. String str1 = "Hej"; String str2 = str1; String str3 = "Hej"; Vad händer om vi skriver “Kalle” i stället? true false -3 Svar: System.out.println(str1 == str2); System.out.println(str1 == str3); System.out.println(str1.equals(str2)); System.out.println(str1.equals(str3)); System.out.println(str1.compareTo(str2)); System.out.println(str1.compareTo(str3));

Att använda String Uppgift: Skriv kod som vänder om en sträng. Exempel: “Hello!” bör bli “!olleH”

Att använda Scanner klassen Uppgift: Räkna medelvärdet av heltals input med Scanner klassen.

Unix, Emacs, mm.

Unix, Emacs, mm.

Unix, Emacs, mm.

Moderna texteditorer för kod https://eclipse.org/home/index.php http://www.sublimetext.com/ GNU Emacs http://www.gnu.org/software/emacs/ http://www.vim.org/ https://notepad-plus-plus.org/