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.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
14 okt. 2003, Arne Maus Inst. for informatikk, UiO
C++ for Java-programmerere
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Introduksjon til objektorientert programmering i PHP
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Uke 8 - Mer om: Objekter, klasser og pekere
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 12 Mer filbehandling - skrive til fil HashMap Et større eksempel Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Objekt, Instanser og referanser + litt til. Objekter  Instanser  En instans er et objekt av en bestemt klasse  Instanser blir laget ved å kalle klassens.
Objektorientert programmering Objektorientert systemutvikling
Objektorientert programmering i PHP del 2
ObjektOrientert Systemutvikling del I
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
#include Ligner litt på import i java. Setter inn hele fila stdio.h i programteksten. Definerer en del io funksjoner slik at signaturen er kjent. I dette.
C for Java-programmerere
Eiendomregister mars 2002 Arne Maus. import java.util.*; import inf101.*; /* Klasse med main() som starter hele programmet */ class EiendomsregisterMain.
Arne Maus, Ifi, Uio © Java, EVU Arne Maus Inst for Informatikk Univ. i Oslo.
Tema: Introduksjon Hvorfor Velocity? Installasjon Velocity VS. JSF / JSP Eksempler Oppsumering.
C# for javaprogrammerere
@ TDT4120 Algoritmer og datastrukturer Introduksjon til øvingsopplegg og programmering i Python Åsmund Eldhuset asmunde stud.ntnu.no.
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
En gang til!? .
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Introduksjon til Java 5.0. Hva er nytt i 5.0? Generiske typer For-løkke med iterator (for-hver løkke) Automatisk innpakking av primitive typer Metadata.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Objektorientert programmering
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 11 Programmering med og uten objekter: hva er forskjellen?
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Föreläsning 13 Programmeringsteknik och Matlab 2D1312/2D1305 Inläsning från fil Skriva till fil StringTokenizer Sortering.
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Indledende Datalogi /kelk 1 Need to know Løkker Klasser, instanser og Objekter Hvorfor objektorientering? Scope – hvor erklæres en variabel? ”Access Modifiers”
Main metoden n public static void main(String[] args){ } n Inni denne metoden skjer alt! n Det kan bare finnes en main metode per program. n Den kan ligge.
INF Objektorientert programmering
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
INF1000 (Uke 12) Sortering og eksamensoppgaver Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B. Kristoffersen.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
1 Inf1000 (Uke 10) Oppgaveløsning. Hashmap Programmering med og uten objekter: hva er forskjellen? Noen generelle råd vedrørende oppgaveløsing HashMap.
Inf1000 (Uke 10) HashMap og ArrayList
INF1000 (Uke 4) Mer om forgreninger, While-løkker
XML og JDOM Helge Furuseth XML  XML = Extensible Markup Language Basert på SGML – Standard Generalized Markup Language  HTML =
Inf1000 (Uke 5) Arrayer, filer og tekst
INF1000 (Uke 11) Programmering
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Iterator i Java boolean hasNext() E next() void remove()
Triks Avslutt alle klasser, metoder og løkker samtidig som du lager dem. Deklarer alle variablene/referansene på begynnelsen av klassen. Hvis du definerer.
BilSalg klassedatastruktur Bil klassedatastruktur
BilSalg klassedatastruktur Bil klassedatastruktur
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

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 /”adgangskontroll”  Start og avslutningsoperasjoner i et objekt  Subklasser, virtuelle prosedyrer  Templates  Java og C#

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

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

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

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