Kommunicerande system

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

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

Föreläsning 8: Exempel och problemlösning

(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

Föreläsning 2, vecka 8: Repetition

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

Mer om metoder och abstraktioner

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

Föreläsning 6: Metoder och fält (arrays)

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

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

Föreläsning 5-6 Innehåll

DAT043 Objektorienterad Programmering

Lab 7, 48 steg till ett bättre liv i Unix-labbet

Objektorienterad Programmering DAT043

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

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

Objektorienterad programmering i Java

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

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

Objektsamlingar i Java

Läsanvisning: Dessa OH bilder samt kap 1-3

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

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

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

OOP Objekt-orienterad 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

Enkla variabler kontra referensvariabel

Klasser och objekt. Henrik Johansson. August 20, 2008

Malmö högskola 2008/2009 CTS

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

Java, klasser, objekt (Skansholm: Kapitel 2)

ID1004 Laboration 3, 5-6 November 2012

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

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

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

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

BASH. Bourne-Again SHell. Eric Elfving Institutionen för datavetenskap (IDA)

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

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

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

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

TDDC77 Objektorienterad Programmering

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

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

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

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

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Tentamen OOP

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

Objektorienterad Programmering (TDDC77)

UNIX Introduktion UNIX. Datorerfarenhet. Vad menar man med operativsystem

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

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

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

Programmeringsteknik F1/TM1

Objektorienterad Programmering (TDDC77)

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

Objektorienterad programmering D2

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

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.

JAVA Mer om klasser och objektorientering

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

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

Den som bara har en hammare tror att alla problem är spikar

Objekt, Klasser, Paket m. m.

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Imperativ programmering. Föreläsning 4

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

TDDD78 Viktiga begrepp, del 2

Typkonvertering. Java versus C

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

Parameteröverföring. Exempel. Exempel. Metodkropp

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

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

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

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

SMD 134 Objektorienterad programmering

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

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Laboration 1: Figurer i hierarki

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

Generiska konstruktioner. Kursbokens kapitel 13

Sammanfattning och repetition utgående från typiska tentamensuppgifter

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

Transkript:

itop Läsanvisning: kap 2 --- Att använda klasser! Meddelanden och metoder! Informationsdöljande och inkapsling! Skapa och använda färdiga objekt!! Primitiva variabler kontra objektvariabler! 3 tester på likhet! Nästa gång: skall vi titta på hur man skriver metoder och hanterar fält kap 2+13 Kommunicerande system jag ---> 50mil ---> farmor som fyller 82 6 1 blomman 2 min lokala blomsteraffär leveransbud maskrosen en blomsteraffär nära farmor florist 4 återförsäljare trädgårdsmästare odlare blomman.skickabukett(värde, adress) maskrosen.skickabukett(värde-blommansvinst, adress) Bukett bukett = floriststina.görbukett(värde) bud.leverera(bukett, adress) 5 3 F 4 1 F 4 2 Meddelande och metoder Man interagerar genom att sända meddelanden blomman.skickabukett(värde, adress) Informationsdöljande och inkapsling stödjer 2 sätt att se på samma komponent och bygger på separation av interface och implementation: ett objekt - meddelandet argument mottagare av vad objektet dvs indata meddelandet skall göra Interface vyn vad kan utföras Implementations vyn hur görs det 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 minfru.skickabukett(värde, adress) kanske ringer en odlingsintresserad kompis som råkar bo i samma stad som min farmor och ber henne fixa något från sin trädgård. hobbe.skickabukett(värde, adress) kanske bara resulterar i ett morrande... 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 F 4 3 F 4 4

Att skapa objekt Man deklarerar (dvs skapar) ett objekt( -handtag ) genom att associera ett variabelnamn med en klass. <KlassNamn> <objektnamn>; Rectangle rect; En referensvariabel skapas med innehållet "null" som kan innehålla adressen till en KlassNamn Man skapar själva objektet (en instans av klassen-man instansierar ) genom att anropa new som anropar klassens konstruktor (som heter som klassen) <objektnamn> = new <KlassNamn>(); rect rect = new Rectangle(...); / (null) rect instansvariabler (och instansmetoder) Rectangle rect = new Rectangle(...); Rectangle(x, y, width, height) x, y är övre vänstra hörnet Rectangle r = new Rectangle(5, 10, 20, 30); r När du anropar new operatorn på klassens konstruktor med parametrar så händer följande: new operatorn skapar ett rektangelobjekt (dvs i det här fallet plats för fyra tal) parametrarna används för att initialisera rektangelobjektets tillstånd new returnerar en referens till objektet... som (vanligen) sparas i en variabel detta kallas att konstruera objektet (construction) F 4 5 F 4 6 Abstaktionen 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! new Rectangle(x, y, width, height) x, y är övre vänstra hörnet Rectangle r = new Rectangle(5,10,20,30); r Klassen Rectangle finns i paketet java.awt i Javas API. F 4 7 Använda objekt gör man genom att anropa deras metoder ( skicka ett meddelande, ställ en fråga eller ge ett kommando ). En Rectangle har tex metoden boolean contains(rectangle r) Checks whether or not this Rectangle entirely contains the specified Rectangle. boolean = typen på returvärdet contains = metodens namn Rectangle r = parameter av typen Rectangle Rectangle a = new Rectangle(...); Rectangle b = new Rectangle(...); boolean con = a.contains(b); b är en explicit parameter, a är en implicit parameter Hur vet man att det finns en contains metod? Java har ett stort API - Application Programmers Interface där alla specifikationer finns. Vad är egentligen en specifikation? F 4 8

specifikation av gränssnittet (interfacet) = syntax och semantik för objektet dvs en definition av ett objekts funktionalitet i termer av hur man skriver när man vill använda funktionaliteten och vad det betyder när man skriver så. En precis beskrivning av vad en klient kan använda sig av hos objektet alltså. implementation = representation och algoritmen dvs de interna variabler och metoder som möjliggör att objektet kan utföra sina löften och en påminnelse: " " " The interface of a black box should be fairly straightforward, well defined, and easy to understand. To use a black box, you shouldn t need to know anything about its implementation; all you need to know is its interface. The implementor of a black box should not need to know anything about the larger systems in which the box will be used. 9 10 11 12

Exempel: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. 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...println("after moving,the top-left corner is:"); System.out.println(box.getX()); System.out.println(box.getY()); } } After moving, the top-left corner is: 20 35 F 4 13 F 4 14 import java.awt.rectangle; En import sats representerar en eller flera filer/foldrar där kompilatorn skall söka efter externa klasser om den inte hittar dem i samma folder som programmet som kompileras. Dessa filer/foldrar måste anges relativt system variablerna path eller classpath. Utan import måste vi skriva java.awt.rectangle box = new java.awt.rect... Varje gång vi refererar till Rectangle Objektvariabler och primitiva variabler Det är skillnad på int moms = 25; int nymoms = moms; 25 moms 25 nymoms och Rectangle box = new Rectangle(5, 10, 20, 30); Skall vi använda många klasser i paketet java.awt så skriver vi import java.awt.*; ----------------------------------- java.lang.integer.parseint java library group, lang library package Integer class, parseint member Klassen Integer skall ligga i foldern $path/java/lang eller $classpath/java/lang jmf med en adress: land, stad, gata, namn Rectangle box2 = box; box box box2 F 4 15 F 4 16

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 ) {... Test på likhet: if( str1.equals(str2) ) {... Test på storlek compareto jämför två strängar med varandra (dvs bokstavsordning) str1.compareto(str2) < 0 (-1) om str1 är mindre än str2 0 om dom är lika > 0 (1) om str2 är mindre än str1 Test på likhet, forts. String str1 = FooBar ; str1 str2 String str2 = str1; String str3 = new String( FooBar ); str3 str1 == str2 true str1 == str3 false str1.equals(str2) true str1.equals(str3) true str1.compareto(str2) 0 str1.compareto(str3) 0 ----------------------------- Hur ser det ut efter str2 = Kalle ;... str2 = str3; FooBar FooBar F 4 17 F 4 18.2 Unix, Emacs mm F 4 19 - Dator - Hårdvaran - Kärna hårdvaruberoende kod - Filsystem ett sätt att organisera filer - trädstruktur med kommandon ls, cd, mkdir,... - absolut path /<...>/<...> - relativ path <...>/<...>/<...> - filändelser <...>.java Kärnan, filsystemet och skalen är ett - Operativsystem Unix, Linux, MacOSX, Windows, MSDos, Amiga, - Fönstersystem, hela skärmen, menyer - Terminalfönster (kommandofönster) emulerar en datorterminal - xterm en terminal emulator, (!vt100) i den körs en kommandotolk som sh, bash, csh, tcsh,... Kommandotolken tolkar kommandon du skriver. F 4 20

Kommandon som styr kommandotolken (bash) bash, tcsh,... (byt shell) history,!! "!!hi (historylistan) tabbe (komplettering) Attempt to perform completion on the text before point. Bash attempts completion treating the text as - a variable (if the text begins with $), - username (if the text begins with ~), - hostname (if the text begins with @), - or command (including aliases and functions) - finally, filename completion is attempted. M-? (esc-shift-?) ^c, ^z, ^d, bg, fg (möjliga kompletteringar) (processhantering) *,? (text expansion) (rm -i *.class) \ (upphäv betydelsen av följande tecken) Förstår även programspråkssyntax och det finns variabler som kan listas med tex echo, env och set (olika sorters variabler) echo $SHELL se spec SHELL, PATH, CLASSPATH, HOME >, <,, >> (omdirigering) kommando > fil (ls -l > tmp) kommando < fil (java Rse < indata.txt) kommando kommando (ls -l wc > tmp) sort sort fil sort < fil sort f1 > f2 sort < f1 > f2 sort f1 >> f2 F 4 21 F 4 22 Kommandon som påverkar filsystemet Kommandon för editering, kompilering mm ls, (lista innehållet) cat (lista innehållet i filer) (ls -l, ls -a, ls -R /) ( cat -te <fil>) cd, pwd (flytta runt i filsystemet) (cat -b <lång fil>.txt grep java) mv, cp (flytta, kopiera filer) more, less rm mkdir, rmdir (ta bort filer (rm -i <fil>, rm -r <mapp>) (rm -i *.class) (jämför med rm *.class) (skapa/ta bort mappar) man <program> (manualsidor) man man (^u, ^d, (=space), q,!, ") sort (sortering av filer) diff (hitta skillnader i filer) grep (sök i filer) lpr, enscript (utskrifter) emacs (välkänd editor) F 4 23 F 4 24