Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertLauritz Gjertsen Endret for 9 år siden
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 http://genamics.com/developer/csharp_comparative.htm#20
Liknende presentasjoner
© 2023 SlidePlayer.no Inc.
All rights reserved.