Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse.

Liknende presentasjoner


Presentasjon om: "1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse."— Utskrift av presentasjonen:

1 1 Litt om OO og programmering Arne Maus

2 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse /”adgangskontroll”  Start og avslutningsoperasjoner i et objekt  Subklasser, virtuelle prosedyrer  Templates  Java og C#

3 3 C++ og arven fra Simula  C++ laget som en nesten ‘kopi’ av Simula av Bjarne Stroustrup  C++ er en utvidelse av (tillegg til) C  C++ har en forferdelig syntaks (skrivemåte)  mange symboler ( * : ) og ord (static) brukes med ulik betydning i ulike sammenhenger  C++ er et rikt språk, men også komplisert  under utvikling, arven fra C, definisjonen stor  eks: static har 26 henvisninger/mulige bruksområder i Stroustrup  God funksjonalitet  Raskt (ikke mer enn 2% langsommere enn ‘ren’ C)

4 4 Java og arven fra C++  Java er laget med C++ syntaks (skrivemåte)  Java er laget med mye av Simulas virkemåte  Pekere sjekkes at de peker på objekt av riktig type  Det sjekkes at arrayer ikke aksesseres utenfor område  Ikke vilkårlig typekonvertering (casting)  Alltid initialiserte variable  Bare enkel arv  Vesentlige nyheter:  Alt er klasser og objekter  Klassevariable  Abstrakte klasser, grensesnitt  Langt flere biblioteker - bl.a Nettet, database(ODBC) og GUI (AWT)  Parallellitet (tråder)

5 5 Java programstruktur  Ethvert programsystem består av:  En rekke kildefiler av typen ’xyz.java’ De inneholder hver en klasse som er refererbar utenfra (public). Klassen heter det samme som filen.  Hver slik.java fil kompileres til en motsvarende.class fil. Det er ansamlingen av. class-filene i filkataloger og underkataloger som er systemet. Innholdet på.class-filene er Bytekode. Er felles for alle maskiner og operativsystemer.  I det enkleste tilfellet tolkes ’.class’ filene (langsomt, men flyttbart)  Nå kompileres vanligvis de under eksekvering eller før eksekvering til maskinkode (raskt, men ikke flyttbart)

6 Kildefil: Test.java (ant. byte: 247) E:\java-unix>javac Test.java E:\java-unix>java Test Arne: 3 * 4 er:12 Kjøring: //Fil: Test.java import java.io.*; public class Test { public static void main (String [ ] args ) { test am = new Test( ); System.out.println("Arne: 3 * 4 er:" + am.xx(4) ); } protected int xx (int i) { return i*3;} }

7 De mest interessante delene av Test.class (=Bytekode, totalt 693 byte)

8 8 Vi må lage alle objekter med new (Java) // fil: Biltest.java import java.io.*; class Bil{ Bil neste ; int reg_nr = 0; } public class Biltest{ Bil first = new Bil( ); Bil sist = first; Bil refA; public static void main ( String[] args){ int i = 0; Biltest b = new Biltest( ); b.make_queue( ); } void make_queue ( ) { int i; System.out.println("Start test"); for (i= 1; i <= 1000; i++){ refA = new Bil( ); sist.neste = refA; sist = sist.neste; } System.out.println ("Slutt test, antall biler er : ” + i); } } // Kjøring: E:\Sun-NT-Java\PC-Java>java biltest Start test Slutt test, antall biler er : 1001

9 9 C++ eks: class Punkt { int x,y;.....}; Punkt *f, *n; f = new Punkt; n = f; f = new Punkt; delete f; delete n; - Også mulig med statisk generering av objekter i C++. Dynamisk generering av objekter i C++ og Java Java eks: class Punkt { int x,y;.....} Punkt f, n; f = new Punkt ( ); n = f; f = new Punkt ( ); Bare dynamisk generering av objekter i Java med new.

10 10 Beskyttelse /”adgangskontroll”  private:  det som bare objekter av denne klassen kan bruke (er default)  protected:  det som objekter av denne klassen og derived klasser (subklasser) kan bruke  public:  Klassens grensesnitt, dvs. det som alle andre deler av programmet kan bruke i objektene.  friendly/package  Klassene på samme fil har adgang til hverandre omtrent som ’public’

11 11 Start og avslutningsoperasjoner i et objekt (Java og C++)  Til enhver klasse kan det defineres og en start og slutt funksjon  constructoren  destructoren (bare C++)  Constructoren  Har samme navn som klassen  Utføres når et objekt av klassen oppstår  Destructoren (bare C++)  Har navn= ~klassenavnet  Utføres når objektet ‘dør’

12 12 class ansatt { String navn;..... } class sjef extends ansatt { int bilkode;... } class direktør extends sjef { int fallskjerm_nr ;...} interface midlertidig {.bare konstanter og metoder u. kode...} class sekretær extends ansatt {...} class tempsekretær extends sekretær implements midlertidig {...}; ansatt ’midlertidig’ sjef direktør sekretær tempsekretær Subklasser = avledete klasser + grensesnitt  Subklasser arver alle attributtene til basisklassen(e)

13 13 template class stack { T * v; T * p; int sz; public : stack (int); ~stack( ); void push (T); T pop( ); int size ( ) const; } template void stack :: push(T a) { *p++ = a;} template stack :: stack(int s) { v = p = new T[sz = s];} stack reg(100); Templates i C++ ( ikke i Java)  Klassenavn som parametre til klasser, generelle klasser

14 14 C# og.NET  C# er et språk som er en nær kopi av Java  Noen forbedringer  Mellomkoden kompileres alltid til maskinkode og er lettere å få rask  Samme mellomkode brukes av mange språk i.NET (Cobol,..., ikke Java)  Mulihet for referanseparametre til metoder  Kan ha vanlige firkant-arrayer i tillegg til Java-type arrayer  Letter print/read bibliotek,..  Muligheter for ‘unsafe’ kode (peker-manipulasjon mm, maskinkode)  Bruker et annet bibliotek enn Java slik at det ikke blir lett å konvertere programmer Java – C#  Konklusjon – Meget like språk – noe lettere å lage effektiv kode i C#  C# er opplagt språket for.NET


Laste ned ppt "1 Litt om OO og programmering Arne Maus. 2 OO og Java (og C++, C#)  Arven fra Simula  Programstruktur i Java  Generering av objekter  Beskyttelse."

Liknende presentasjoner


Annonser fra Google