28
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 OOMPA 1999 Föreläsning 3

Objektorienterad Modellering Programmering och Analys

  • Upload
    faolan

  • View
    48

  • Download
    1

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: Objektorienterad Modellering Programmering och Analys

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

OOMPA 1999Föreläsning 3

Page 2: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 2 -

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

Page 3: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 3 -

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

Page 4: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 4 -

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

Page 5: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 5 -

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

Page 6: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 6 -

Java

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, 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

Page 7: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 7 -

Virtuell maskin

källkod java bytekod

PcVM

MacVM

UnixVM

kompilera(javac)

en virtuellmaskin

per plattformstyp

kör(java)

Page 8: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 8 -

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!");

}

}

Page 9: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 9 -

... 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

Page 10: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 10 -

Ett "Javaprograms" struktur

En klass ser ut på följande sättpublic class KlassNamn extends SuperKlassNamn{

attribut (instans- och klassvariabler)

metoder (instans- och klassmetoder)

konstruktörer

}

Kallas också för medlemmar

• En metodmodifierare returtyp funktionsnamn(argument){

programsatser}

Page 11: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 11 -

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

}

Page 12: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 12 -

Deklarera och instansiera

Deklaration av instansKlassNamn variabelNamn;

InstansieringvariabelNamn = new KlassNamn();

alternativt, både deklaration och instansiering på en gångKlassNamn variabelNamn = new KlassNamn();

Page 13: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 13 -

Kompilera och köra

Environmentvariabel– Gör först (NADA)

module add javaGer 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 namnetKlassnamn.class

Kör med java klassnamnjava Klassnamn

Page 14: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 14 -

Typer

I Java måste alla variabler och metoder deklareras med typTyp variabel;

Det finns primitiva typer som int, char, float och booleanint x;

En variabel kan ges ett initialt värde vid deklarationenint x = 10;

Man kan också använda typer som är implementerade som vanliga klasser String course = "OOMPA-99";

Page 15: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 15 -

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

Page 16: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 16 -

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;}

}

Page 17: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 17 -

...

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

Page 18: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 18 -

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

Page 19: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 19 -

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, mallpublic class KlassNamn extends SuperKlassNamn{

attribut (instans- och klassvariabler)metoder (instans- och klassmetoder)konstruktörer

}

Page 20: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 20 -

Sammanfattning: Deklarera och instansiera

Deklaration av instansKlassNamn variabelNamn;

InstansieringvariabelNamn = new KlassNamn();

alternativt, både deklaration och instansiering på en gångKlassNamn variabelNamn = new KlassNamn();

Page 21: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 21 -

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 filnamnjavac Klassnamn.java

– om allt går bra skapas då en fil med namnetKlassnamn.class

Kör med java klassnamnjava Klassnamn

Page 22: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 22 -

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();

Page 23: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 23 -

... 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");

}}

Page 24: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 24 -

... och så sparar vi, kompilerar och kör

Spara– Spara filen med samma namn som klassen med extension

.java, dvs här Circle.java

Kompilerajavac Circle.java

– Skapar en fil Circle.class

Körjava Circle

Page 25: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 25 -

Exempel: Eka argument

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

Kompilerajavac Echo.java

Körjava Echo detta är input

Page 26: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 26 -

In- och utmatning

Textutmatning sker via klassen SystemSystem.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 Systemchar c = System.in.read()

– Inmatningen måste dock ”fånga” undantagtry{char c = System.in.read()}

catch(IOException e){//fel har inträffat}

Page 27: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 27 -

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);

}

}

}

Page 28: Objektorienterad Modellering Programmering och Analys

© Björn Eiderbäck 1999

- 28 -

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);

}

}}