Objektorienterad Modellering Programmering och Analys

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

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.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
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.
Imperativ Programmering
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
Objektorienterad Realtidsprogrammering
Metoder i java Det finns två typer av metoder i java
Om Java C =>Java syntax variabler metoder färdiga klasser
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
2D-grafik. Något om FrameWorks
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
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.
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Klasser och objekt Klasser, objekt och instansvariabler
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.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
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 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
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 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
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.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
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.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
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 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Objektorienterad Modellering Programmering och Analys OOMPA 1999 Föreläsning 3 Objektorienterad Modellering Programmering och Analys Objektorientering grunder-2 Komponenter och beteende Java introduktion och översikt kort historik Javas arkitektur klass, metod, attribut något om virtuell maskin, klasser, filer och kompilering

En komponent En komponent karaktäriseras genom sitt beteende Dvs vad kan den göra En komponent brukar delas upp i: Beteende Vad kan komponenten göra Protokoll Tillstånd Vilken information är knuten till komponenten Informationen kan ändras över tiden © Björn Eiderbäck 1999

Dela upp på delkomponenter Identifiera vad som skall göras och sedan vem som skall göra det Då man börjar få någorlunda klart för sig vad man skall konstruera är det dags att identifiera komponenter Komponenterna (systemen) delas sedan upp på delkomponenter (delsystem) Detta är ofta en brainstormingliknande iterativ process © Björn Eiderbäck 1999

Tumregler En komponent skall ha en liten mängd väldefinierat och meningsfullt ansvar Ändringar skall påverka så få som möjligt Om detta uppfylls brukar man tala om en hög kohesion (eng. cohesion) 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 © Björn Eiderbäck 1999

Parnas principer 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 Utvecklaren av en mjukvarukomponent måste erbjudas all nödvändig information, men ingen annan, för att kunna utföra komponentens tilldelade ansvar © Björn Eiderbäck 1999

Java Java är konstruerat på SUN Starkt typat 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, Internet, 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 © Björn Eiderbäck 1999

Virtuell maskin kompilera källkod java bytekod (javac) kör (java) en virtuell maskin per plattformstyp Pc VM Mac VM Unix VM © Björn Eiderbäck 1999

Java: mitt första "program" Skapa en fil med namnet MyFirstProgram.java 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!"); } © Björn Eiderbäck 1999

... kompilera och kör Kompilera >javac MyFirstProgram.java Då genereras en körbar fil MyFirstProgram.class Kör genom att starta Javas virtuella maskin med program/klassnamnet som argument >java MyFirstProgram Mitt första program! Regeln är att klassens static void main-metod alltid exekveras © Björn Eiderbäck 1999

Ett "Javaprograms" struktur En klass ser ut på följande sätt public class KlassNamn extends SuperKlassNamn{ attribut (instans- och klassvariabler) metoder (instans- och klassmetoder) konstruktörer } Kallas också för medlemmar En metod modifierare returtyp funktionsnamn(argument){ programsatser } © Björn Eiderbäck 1999

Konstruera klass Klassnamn = filnamn En klass skall ha samma namn som den fil den placeras i Klassen Circle i filen Circle.java 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 Definition av klass, mall public class KlassNamn extends SuperKlassNamn{ attribut (instans- och klassvariabler) metoder (instans- och klassmetoder) konstruktörer } © Björn Eiderbäck 1999

Deklarera och instansiera Deklaration av instans KlassNamn variabelNamn; Instansiering variabelNamn = new KlassNamn(); alternativt, både deklaration och instansiering på en gång KlassNamn variabelNamn = new KlassNamn(); © Björn Eiderbäck 1999

Kompilera och köra Environmentvariabel Gör först (NADA) module add java Ger idag (990907) jdk-1.1.6 För jdk-1.2 (rekommenderas om du inte skall göra appletar) skriv istället: module add jdk/latest Hemma bör du explicit sätta path (se systemdokumentation) Kompilera med javac filnamn javac Klassnamn.java om allt går bra skapas då en fil med namnet Klassnamn.class Kör med java klassnamn java Klassnamn © Björn Eiderbäck 1999

Typer I Java måste alla variabler och metoder deklareras med typ Typ variabel; Det finns primitiva typer som int, char, float och boolean int x; En variabel kan ges ett initialt värde vid deklarationen int x = 10; Man kan också använda typer som är implementerade som vanliga klasser String course = "OOMPA-99"; © Björn Eiderbäck 1999

Modifierare 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 indikerar att medlemmen är klassvariabel eller klassmetod public medlemmen är accessbar överallt där dess klass är accessbar protected medlemmen endast accessbar i klassen, dess subklasser eller i aktuellt package (vi återkommer till package vid senare tillfälle) private medlemmen endast accessbar i den klass som definierar den © Björn Eiderbäck 1999

Exempel import java.io.*; public class BankAccount{ protected int balance = 0; public void deposit (int amount) { balance = balance + amount;} public void withdraw (int amount) { balance = balance - amount;} public int balance (){ return balance;} } © Björn Eiderbäck 1999

... 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 © Björn Eiderbäck 1999

På NADA 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 © Björn Eiderbäck 1999

Sammanfattning: Konstruera klass Klassnamn = filnamn En klass skall ha samma namn som den fil den placeras i Klassen Circle i filen Circle.java 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 Definition av klass, mall public class KlassNamn extends SuperKlassNamn{ attribut (instans- och klassvariabler) metoder (instans- och klassmetoder) konstruktörer } © Björn Eiderbäck 1999

Sammanfattning: Deklarera och instansiera Deklaration av instans KlassNamn variabelNamn; Instansiering variabelNamn = new KlassNamn(); alternativt, både deklaration och instansiering på en gång KlassNamn variabelNamn = new KlassNamn(); © Björn Eiderbäck 1999

Sammanfattning: Kompilera och köra 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 setenv CLASSPATH $HOME/MyJAVA:. Kompilera med javac filnamn javac Klassnamn.java om allt går bra skapas då en fil med namnet Klassnamn.class Kör med java klassnamn java Klassnamn © Björn Eiderbäck 1999

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(); © Björn Eiderbäck 1999

... 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"); } © Björn Eiderbäck 1999

... och så sparar vi, kompilerar och kör Spara filen med samma namn som klassen med extension .java, dvs här Circle.java Kompilera javac Circle.java Skapar en fil Circle.class Kör java Circle © Björn Eiderbäck 1999

Exempel: Eka argument Kompilera Kör 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++) System.out.print(argv[i] + " "); System.out.print("\n"); System.exit(0); } forloopar ser ut som i ANSI-C Kompilera javac Echo.java Kör java Echo detta är input © Björn Eiderbäck 1999

In- och utmatning Textutmatning sker via klassen System System.out.println(...); Där: System är en klass i java.lang out är en klassvariabel i System out är en instans av klassen PrintStream PrintStream har en instansmetod println som skriver ut text på terminalen Textinmatning sker också via klassen System char c = System.in.read() Inmatningen måste dock ”fånga” undantag try{char c = System.in.read()} catch(IOException e){//fel har inträffat} © Björn Eiderbäck 1999

Exempel: ”program” med teckeninmatning package Tests; import java.io.*; class TestIO_1_1 { public static void main(String [] args) {for(;;){int in; try {in = System.in.read();} catch(IOException e) {in = -1;} if ((char) in == '0') return; System.out.println(in); } © Björn Eiderbäck 1999

Exempel: dialog med stränginmatning package Tests; import java.io.*; class TestIO { public static void main(String [] args) throws IOException { System.out.println("TEST OF INTERACTION/1"); BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); for(;;) { System.out.print(">"); String line = in.readLine(); if ((line == null) || (line.equalsIgnoreCase("quit"))) break; if (line.equalsIgnoreCase("help")) System.out.println("To quit: write 'quit'"); else System.out.println("\teko: " + line); } }} © Björn Eiderbäck 1999