OOMPA 2D1359 Föreläsning 3



Relevanta dokument
Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

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

OOMPA 2D1359 Föreläsning 2

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

JAVA Mer om klasser och objektorientering

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

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

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

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

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

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

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

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

(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 4. Klass. Klassdeklaration. Klasser Och Objekt

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

Laboration 1 - Grunderna för OOP 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.

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

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

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

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

..arv Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur. 2203$ ) UHOlVQLQJ.

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

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

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

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

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

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

Klasshierarkier - repetition

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

SMD 134 Objektorienterad programmering

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Chapter 4: Writing Classes/ Att skriva egna klasser.

Laboration 1: Figurer i hierarki

Klasser och objekt. Henrik Johansson. August 20, 2008

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

TDDE10 TDDE11, 725G90/1. 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

Laboration 2: Designmönster

DAT043 - Föreläsning 7

Objektorienterad Programmering (TDDC77)

Imperativ programmering. Föreläsning 4

Laboration 2: Designmönster

Introduktion till arv

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

Design av en klass BankAccount som representerar ett bankkonto

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Objektorienterad programmering i Java

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

Föreläsning 13 Innehåll

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

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

Programmering för språkteknologer I, VT2012. Rum

Tentamen , Introduktion till Java, dtaa98, dtea53

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

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

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

Editering, Kompilering och Exekvering av Javaprogram

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

Objektorienterad Programmering (TDDC77)

SMD 134 Objektorienterad programmering

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

Att använda Java SE JDK 6

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

DAT043 - föreläsning 8

Föreläsnings 9 - Exceptions, I/O

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

OOP Objekt-orienterad programmering

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

TDDC77 Objektorienterad Programmering

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Objektorienterad Programmering (TDDC77)

F4. programmeringsteknik och Matlab

Repetition av viktiga begrepp inom objektorienterad programmering

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

Transkript:

OOMPA 2D1359 Föreläsning 3 Objektorienterad Modellering Programmering och Analys Objektorientering grunder-2 l Komponenter och beteende l CRC-kort Teknik för att beskriva och ta fram objekt, klasser och relationer l Java introduktion och översikt klass, metod, attribut något om virtuell maskin, klasser, filer och kompilering - 1 - En komponent l En komponent karaktäriseras genom sitt beteende Dvs vad kan den göra l En komponent brukar delas upp i: Beteende l Vad kan komponenten göra l Protokoll Tillstånd l Vilken information är knuten till komponenten l Informationen kan ändras över tiden - 2-1

Dela upp på delkomponenter l Identifiera vad som skall göras och sedan vem som skall göra det l Då man börjar få någorlunda klart för sig vad man skall konstruera är det dags att identifiera komponenter l Komponenterna (systemen) delas sedan upp på delkomponenter (delsystem) l Detta är ofta en brainstormingliknande iterativ process - 3 - Tumregler l En komponent skall ha en liten mängd väldefinierat och meningsfullt ansvar Ändringar skall påverka så få som möjligt l Om detta uppfylls brukar man tala om en hög kohesion (eng. cohesion) l En komponent skall interagera så lite som möjligt med andra komponenter Att minska kopplingen (eng. coupling) mellan olika komponenter ökar sannolikheten för att ändringar kan göras med minimal inverkan på andra komponenter - 4-2

Parnas princip l Utvecklaren av en mjukvarukomponent måste erbjuda den tänkta användaren med all information som behövs, men ingen annan, för att effektivt använda den erbjudna servicen l Utvecklaren av en mjukvarukomponent måste erbjudas all nödvändig information, men ingen annan, för att kunna utföra komponentens tilldelade ansvar - 5 - CRC-kort (Class-Responsibility-Collaborators) l Av Cunningham och Beck under mitten av 80-talet. Togs fram för att lära ut objektorienterad programmering För att ge komponenter fysisk presentation l Bra vid brainstorming /spånande l Process: Man skriver ner klasser på kort. Selektera inte nu utan skriv ner alla förslag Efter ett tag när man har ett (tillräckligt) antal klasser väljer man ut dom bästa Sedan går man över till att identifiera ansvarsområden och beteende för varje klass Sedan identifieras samarbete klasser emellan Man försöker också ordna klasserna hierarkiskt samt identifiera abstrakta klasser - 6-3

l Ett blankt CRC-kort Klassnamn Ansvar Samarbetspartners - 7 - CRC: Exempel l Grafiskt objekt som har en metod för att rita "sin" figur och ett delobjekt som också skall ritas ut GrafisktObjekt Håller grafisk beskrivning i form av en en metod som beskriver den aktuella presentationen Skall kunna innehålla ett annat grafiskt objekt med samma API som det själv Det skall gå att lägga in ett nytt eller ta bort det aktuella grafiska delobjektet Vid utritning skall det grafiska objektet också se till att delobjektet ritas ut GrafisktObjekt - 8-4

Personregister Hanterar ett register av personer Personer kan läggas in eller tas bort Kan sortera registret efter namn, födelsenummer respektive adress Person Person superklasser: Object subklasser: Student Hanterar information om en person: namn, adress, telefon, födelsenummer Student superklasser: Person subklasser: Hanterar email och kursstatus - 9 - CRC: Publicist och prenumerant Publicist Håller intressant information/data Meddelar prenumeranter om informationen ändras Prenumerant Prenumerant Prenumererar på intressanta förändringar hos en eller flera publicister Implementerar en strategi för att ta hand om meddelanden om förändringar från publicisten Publicist - 10-5

Vy "Klassiska" MVC Visualisera modellen Transformera koordinater Kontroll Modell Kontroll Tolka inmatning från användaren Fördela kontroll Vy Modell Modell Problemrelaterad information Skicka ut meddelanden om förändringar - 11 - Java l l l l l l l Java är konstruerat på SUN Första versionen släpptes 1995 Starkt typat Dvs det går att avgöra typkompatibilitet av alla uttryck i programmet vid kompileringstillfället. Virtuell maskin (VM) som gör det maskinoberoende En speciell VM per plattformstyp överbryggar olikheter i plattformarnas arkitektur Klassbibliotek språkklasser, stränghantering, grafik, gränssnitt, fönster, nät, händelsehantering, processer, collections, mm Bindning till WWW med applets och liknande Har fått sin huvudsakliga spridning via Internet Syntax som C, semantik och klasser mer som Smalltalk - 12-6

Java: mitt första "program" l Skapa en fil med namnet MyFirstProgram.java l Skriv följande kod i filen: import java.io.*; public class MyFirstProgram{ public static void main (String [] args) { System.out.println("Mitt första program!"); } } - 13 -... kompilera och kör l Kompilera >javac MyFirstProgram.java l Då genereras en körbar fil MyFirstProgram.class l Kör genom att starta Javas virtuella maskin med program/klassnamnet som argument >java MyFirstProgram Mitt första program! l Regeln är att klassens static void main-metod alltid exekveras - 14-7

Ett "Javaprograms" struktur Kallas också för medlemmar l En klass ser ut på följande sätt public class KlassNamn extends SuperKlassNamn{ } attribut (instans- och klassvariabler) metoder (instans- och klassmetoder) konstruktörer l En metod modifierare returtyp funktionsnamn(argument){ programsatser } - 15 - Typer l I Java måste alla variabler och metoder deklareras med typ Typ variabel; l Det finns primitiva typer som int, char, float och boolean int x; l En variabel kan ges ett initialt värde vid deklarationen int x = 10; l Man kan också använda typer som är implementerade som vanliga klasser String course = "2D1359"; - 16-8

Modifierare l En modifierare kan användas för att ange vilka objekt som kan accessa en klass eller dess medlemmar (dvs dess attribut eller metoder), mest grundläggande är: static l indikerar att medlemmen är klassvariabel eller klassmetod public l medlemmen är accessbar överallt där dess klass är accessbar protected l medlemmen endast accessbar i klassen, dess subklasser eller i aktuellt package (vi återkommer till package vid senare tillfälle) private l medlemmen endast accessbar i den klass som definierar den - 17 - Exempel import java.io.*; public class BankAccount{ private int balance = 0; public void deposit (int amount) { balance = balance + amount;} public void withdraw (int amount) { balance = balance - amount;} } public int balance (){ return balance;} - 18-9

... BankAccount account1, account2; int transfer; account1 = new BankAccount(); account2 = new BankAccount(); account1.deposit(200); account2.deposit(100); transfer = 75; account1.withdraw(transfer); account2.deposit(transfer); account2.balance(); // resultat 175-19 - På NADA l Då du kör på någon av NADAS datorer bör du först göra: module add java Då ändras din PATH så att du direkt kan komma åt Java-kompilatorn och standardbiblioteken - 20-10

Sammanfattning: Konstruera klass l Klassnamn = filnamn En klass skall ha samma namn som den fil den placeras i l Klassen Circle i filen Circle.java l En fil kan innehålla flera klasser men bara en av dem kan vara deklarerad public, Det är den publika klassens namn som motsvarar filens l Definition av klass, mall public class KlassNamn extends SuperKlassNamn{ attribut (instans- och klassvariabler) metoder (instans- och klassmetoder) konstruktörer } - 21 - Sammanfattning: Deklarera och instansiera l Deklaration av instans KlassNamn variabelnamn; l Instansiering variabelnamn = new KlassNamn(); alternativt, både deklaration och instansiering på en gång KlassNamn variabelnamn = new KlassNamn(); - 22-11

Sammanfattning: Kompilera och köra l Environmentvariabel Gör först (NADA) module add java Hemma bör du explicit sätta path (se systemdokumentation) Om du har en egen java-katalog kan det vara idé att sätta environmentvariabeln CLASSPATH l setenv CLASSPATH $HOME/MyJAVA:. l Kompilera med javac filnamn javac Klassnamn.java om allt går bra skapas då en fil med namnet Klassnamn.class l Kör med java klassnamn java Klassnamn - 23 - Exempel: Klass Circle // Klassdefinition (utan extends medför subklass till Object) public class Circle {public double x, y; public double r; public double circumference(){return 2 * 3.14 * r;} public double area(){return 3.14 * r * r;} // för att testa det hela skriver vi en static main-metod public static void main (String args[]) { //Vi deklarerar en temporär variabel Circle circle; // och instansierar circle = new Circle(); - 24-12

... forts... }} //vi ändrar några värden circle.x = 100; circle.y = 200; circle.r = 20; // vi gör några testutskrifter System.out.println("Cirkelns x-koordinat: " + circle.x + " och dess y-koordinat: " + circle.y); System.out.println("den har en radie också: " + circle.r); System.out.println( "metoden circumference ger omkretsen: " + circle.circumference()); System.out.println("och med area:" + circle.area() + " dess area"); - 25 -... och så sparar vi, kompilerar och kör l Spara Spara filen med samma namn som klassen med extension.java, dvs här Circle.java l Kompilera javac Circle.java Skapar en fil Circle.class l Kör java Circle - 26-13

Exempel: Eka argument l Skapa fil Echo.java (som ekar argumenten vid exekveringen) public class Echo { public static void main(string argv[]) { for(int i = 0; i < argv.length; i++) forloopar System.out.print(argv[i] + " "); ser ut som i ANSI-C System.out.print("\n"); System.exit(0); }} l Kompilera javac Echo.java l Kör java Echo detta är input - 27-14