Generiske mekanismer i klasser og pakker
|
|
- Astrid Nesse
- 7 år siden
- Visninger:
Transkript
1 Generiske mekanismer i klasser og pakker Stein Krogdahl OMS-seminar, 14. desember 2004 Noen temaer: Litt om de nye generiske mekanismene i Java 1.5 og C# 2.0 Hva kan være interessant ved å i stedet ha generiske pakker? Noen mekanismer som kan være aktuelle ved generiske pakker
2 Generiske klasser i C# og Java Hovedideen Anta følgende definert: interface I{ class C{ Definisjon av generisk klasse: C#: class G<T> where T:C, I { her kan T brukes som en vanlig klasse/type som har alt som er definert i I eller C Java: class G<T extends C implements I> { som over, men litt mer begrenset En mulig aktuell parameter: class AC extends C implements I{ (og tilsvarende for C#) Denne kan så brukes slik: G<AC> g = new G<AC>( ); Man må altså angi parameteren hver gang, og samme parameterisering gir samme klasse. C#: Generiske parametere kan være både klasser, interfacer, og grunntyper Java: Generiske parametere kan bare være klasser og interfacer
3 Generiske klasser i Java (versjon 1.5) Anta den generiske klassedefinisjon G<T extends C> { Java 1.5 har ingen runtime-representasjon av parametriseringen av en generisk klasse. Ting oversettes til gammel bytekode. Derfor følgende egenskaper: Man kan ikke caste til G<A> eller si instanceof G<A> Man kan ikke (inni klassen) caste til T eller si instanceof T. Alle klasser G<A>, der A er en aktuell parameter, har felles sett av statiske variable og metoder. Derfor: Typene på disse kan ikke avhenge av T I refleksive operasjoner ser objekter av alle klasser G<A> ut til å være av samme klasse. Altså om: G<A1> a1 = new G<A1>( ); G<A2> a2 = new G<A2>( ); så er følgende sant: a1.getclass( ) == a2.getclass( ) Bruker samme runtime-koden for alle parametriseringer av en generisk klasse.
4 Mer om generisk Java Anta den generiske klassedefinisjon: G<T extends C> { Man kan ikke (inni G) gjøre new T( ). Må bruke factory-teknikken Klassene G<A1> og G<A2> har ingen sub/super-relasjon til hverandre, heller ikke om A1 og A2 har det. (Altså ikke kovarians, som for arrayer). Joker-notasjon (wildcard): Man kan bruke G<?> eller G<? extends A> eller G<? super A> som type på variable m.m. (A må da være subklasse av spes. av G sin parameter.) G<?> kan altså sies å være en supertype til alle G<?>. Variabel G<?> g kan da peke til objekter av alle klasser G<A> Dersom G<C> gc, så går da g = gc, men ikke omvendt Man kan også bruke bare G som type. Dette kalles den rå typen, og den likner på G<?>, men mer er tillatt. Om man har et bibliotek som er laget med generiske typer, men man bare bruker klassene som rå typer virker dette som et tilsvarende bibliotek uten generiske klasser. (Stemmer dette fullstendig?) Om man i et program bruker G i både rå form og som G<A>, vil tilordning bli tillatt begge veier. Java gir da en kompilator-advarsel der det kan gå galt (men det blir ikke lagt inn noen runtime-test). Dette er for å kunne blande gammel og ny Java-kode.
5 Generisk C# (versjon 2.0) C# lager en runtime-descriptorer for alle brukte parametriseringer av en generisk type. Man kan derfor bruke casting og instanceof helt fritt, både med parameteren T (inne i G) og med klassen G<A>. Man kan (inni G) gjøre new T( ), dersom man har spesifisert T slik: class G<T> where T: C, new( ) { Kan dog ikke bruke konstruktører med parametere. Kan gi alias-navn til generiske klasser med aktuelle parametere: using GA = G<A>; I tillegg til generiske klasser og interfacer, kan man ha generiske struct er Det er gjort utvidelser i bytekoden (CIL), slik at den forstår generiske klasser/interfacer/structer (i motsetning til i Java). Derfor går tingene over greit. Bruker samme runtime-koden for alle G<A>, så langt det er mulig (oftest, så lenge de aktuelle parametrene bare er klasser/interfacer). Så vidt jeg kan se, ingen joker-notasjon.
6 Generelt for både Java og C# Det tillates ikke å bruke T som superklasse i en (indre) klassedefinisjon. Man kan bruke såkalt F-bounded polymorphism class G<T extends G<T>> En klasse som kan brukes som aktuell parameter for T er f.eks.: class A extends G<A> Man kan ha generiske parametere på metoder (gjelder også statiske metoder): Java: <U extends B>U getvalue (int i, U u) { kan anta at U har alt B har C#: U getvalue <U> (int i, U u) where U:B{ kan anta at U har alt B har Ut fra den konteksten en metode kalles i og fra de aktuelle parametere finner Java/C# nesten alltid den riktige typen av U. Den behøver derfor ikke angis. Det blir et utall av nye regler for navnebinding etc, f.eks.: Må passe på at det ikke blir dobbeltdeklarasjon av de to m-metodene i: class G<T>{ ; void m(t a){ ; void m(c a); Det blir problemer om G gies aktuell-parameteren C. Parameteren T er det greit at bare er synlig i klassen G, ikke i subklasser.
7 Interfacer til collection-klassene i Java Det kan virke kurant å gjøre om Collection-klassene i Java/C# til generiske varianter, men det er mange detaljer som skal stemme. Litt fra Javas generiske bibliotek (forenklet): interface Collection<E>{ void add(e o); bool containsallof(collection<?> c);... interface Comparator<T>{ int compare(t o1, T o2);... interface SortedSet<E>{ Comparator<? super E> comparator( ); E first( ); E last( );...
8 Vi kan forsøke et annet utgangspunkt: Generiske pakker i stedet for generiske klasser. Grunner for å forsøke dette: Implemetasjonen av begreper består ofte av flere klasser Eks: Graf (node og kant), SIMSET-liste (hode og element) Frameworks består av et antall halvferdige klasser, som kan utvides til å bli et ferdig program Det er selvfølgelig derfor begrepet pakker er laget i Java Det kan da være rimelig å parametrisere hele slike pakker som en enhet. Hver instansiering blir et helt nytt sett med klasser, og under instansieringen kan man gjøre alle slags substitueringer/transformasjoner/utvidelser man måtte ha lyst til. Typesystemet blir enklere, og svært mye kan gjøres ferdig i kompilatoren Grunner til ikke å satse på dette: Det blir noe mer statisk over pakker. Dette kan gjøre det hele mindre fleksibelt å bruke. Man kan i stedet bruke klasser inne i klasser, og parameterisere den ytre klassen.
9 Arbeids-syntaks generic package GP<T extends C> { class A{... ; T a = new T( );... class B{... class C{... // C i spesifiseringen av T bindes til denne // C kunne også være en klasse i en vanlig pakke X: inst GP<D>; // X er navnet på denne instansieringen av GP Y: inst GP<E>; // Navnet X/Y trengs ikke om man bare har en inst. class D extends X:C{... // D derved en lovlig parameter til X class E extends Y:C{... // Tilsvarende Merk at selv om begge instansieringene hadde hadde hatt samme parameter, så ville det likevel blitt to separate sett med klasser (i motsentning til for generiske klasser, der C<A> gjentatt flere ganger betyr samme klassen).
10 Collection-klassene som generiske pakker Føst en vanlig pakke med en interface som er supertyper til alle Collections (for å oppnå noe tilsvarende Joker-notasjon): package COLLOBJ{ // Pekere av denne typen kan peke til alle Collections interface CollObj{ void addobj(obj o); // Implementasjon: Test det er et E-objekt, kall så add. Object getobj( ); // Leverer et tilfeldig objekt, kaller get bool containsallof(collobj c); // NB: En vilkårlig Collection være parameter Så en generisk pakke med de parameteriserte interfacer og implementasjonsklassene: generic package COLL<E>{ import COLLOBJ; interface Coll extends CollObj{ void add(e a); E get( ); class CollImplA implements Coll{ impl. av add, addobj, get, getobj, containsallof,... class CollImplB implements Coll{ impl. av add, addobj, get, getobj, containsallof,...
11 Bruk av Collection-klassene package COLLOBJ{ // Som på forrige foil generic package COLL<E>{ // Som på forrige foil class Bil{ int vekt; class Person{ String navn; import COLLOBJ; // Uklart om det er nødvendig (følger dette av det under?) B: inst COLL<Bil>; P: inst COLL<Person>; B:Coll bc = new B:Coll( ); P:Coll pc = new P:Coll( ); bc.get( ).vekt = 2; pc.add(new Person( )); // Går helt greit CollObj co;... co = bc;... co = pc; // Går helt greit co.addobj(new Person( )); // Går greit om co angir en P:Coll if (pc.containsallof(bc))... // Går greit, og gir mening om Person er subklasse av Bil
12 Utvidelse til ordered collection Først en vanlig pakke med en interface som kan type alle ordnede Collections: package ORDCOLLOBJ{ import COLLOBJ; interface OrdCollObj extends CollObj{ Obj firstobj( ); Så den parameteriserte versjonen: generic packege ORDCOLL<E implements Compare>{ import ORDCOLLOBJ; inst COLL<E>; // Ta inn alle klassene etc. fra COLL, med E som parameter interface Compare {int compare(e e1, E e2);... interface OrdColl{ E first( ); class OrdCollImplA implements OrdColl{ impl av alle metoder... class OrdCollImplB implements OrdColl{ impl av alle metoder...
13 Oppsummering så langt Generiske pakker ser ut til å fungere sånn noenlunde som erstatning for generiske klasser, for en del rett fram behov. Men det må studeres mye mer om dette er fleksibelt nok til å dekke alle rimelige behov som generiske klasser dekker. Antakeligvis må man lage en forenklet syntaks for generiske pakker som bare inneholder én klasse, slik at den ser ut som en mer tradisjonell generisk klasse. F.eks. ved at følgende: generic package GC<E>{ class C{... kan skrives som: generic class C<E>{... Må man da bruke alias?: using CP = C<Person>; Vi skal i det videre se på andre muligheter rundt generiske pakker: Kunne utvide klassene med attributter/metoder som del av instansieringen Angi navneforandringer Kunne kombinere klasser fra flere generiske pakker til en felles klasse Noe nytt med hensyn til synlighetsregler Det er ikke opplagt at de forskjellige ideene til transformasjoner man kunne komme på vil gå godt sammen. Men: Forsøke å utrede mange muligheter først, så se hva som kan bli gode komposisjoner.
14 Tre nivåer for separat behandling av moduler Gjør bare syntakstisk sjekk av modulen, og gjør all semantisk sjekk og oversettelse når aktuelle parametere og andre forandringer er på plass. Slik virker templates i C++ Legg opp til å skulle gjøre full syntaktisk og semantisk sjekk av separate moduler, men ikke tenk på oversettelse. Da må f.eks. typeparametere spesifiseres. Legg opp til at separate moduler også skal kunne oversettes til en passelig kode. Merk her at det ikke er like krevende å oversette til bytekode/cil som til utførbar maskinkode. (I siste tilfelle bør relativadresser beregnes av kompilatoten, mens dette for bytkode gjøres i loaderen (ofte med JIT-kompilering). Vi skal her fortrinnsvis tenke i midterste nivå, så får man heller etterpå se hva som kan oversettes til hva slags kode.
15 Mulighet 1: Utvidelser av klassene ved instansiering generic package ANIMALS; class Animal{... class Mammal extends Animal{... void m( ){ class Horse extends Mammal{... class Dog extends Mammal{... void m( ){... // En redefinisjon class Insect extends Animal{... class Ant... inst ANIMALS expanding Animal, Mammal=>Mam, Dog; expansion Animal {... void m( ){ // En annen redefinisjon expansion Mam{... // Denne klassen får altså nytt navn expansion Dog{... m( );... // Hvilken redefinisjon blir da kalt? Man må her nøye lage synlighetsregler og regler for redefinisjoner. Hva om vi def/redef metoden m som over. Hvilken har da effekt ved kallet i ekspansjonen av Dog? Har tidligere kalt dette statisk arv, men det blir mindre rimelig å se det som arv/subklasser dersom en klasse med subklasser kan utvides.
16 Eksempel: Generisk pakke Graph generic package GRAPH expandable Node, Edge { // Oppgir de som kan ekspanderes. Fornuftig? class Node { Edge firstedge; / / First in the list of edges leaving this node Edge insertedgeto(node to){... / / Delivers the inserted new edge class Edge { Node from, to; Edge nextedge; / / Next in the list of edges leaving the same node void deleteme( ){ Bruk: inst GRAPH Node =>City, Edge =>Road; expansion City { / / Expansion of Node String name; / / In some method: int n = firstedge.length; / / OK, as type of "firstedge" is now Road City c = new City(... ); Road r = insertedgeto(c); / / No co- or contra-variance problems... expansion Road { / / Expansion of Edge int length;
17 Litt historie omkring ekspanderbare klasser Ekspanderbare klasser (der klassene ikke har subklasser i pakkene) kan sees som en slags virtuelle klasser til en modul, der bindingen av klassen gjøres når modulen brukes (instansieres) Behovet for noe slags virtuelle klasser, og en liknende mekanismen som den over, kom opp i arbeidet med Simula 85 (Arne W., Stein K., Jo P., Peter J.) i 80-årene. Er så beskrevet i Simula-sammenheng i rapporten On Modernizing the Simula language av Stein K. fra 1986 (Ifi-rapport), der også multippel arv i forbindelse med dette ble foreslått (samt div. andre ting). Beta-verdenen så det samme behovet, og at det kunne løses med deres virtuelle patterns ( Virtual classes: A powerful mechanism in O-O programming av Birger M.-P. og Ole L. M., OOPSLA 1989) Diverse hovedoppgaver: Lars Tafjord og Holm-Kjetil Holmsen: Implementasjon for Simula ( SiMod ) Endre Rognerud: Så på hvilke muligheter dette begrepet kan gi. Fredrik Sørensen (nå): Ser på en homogen implementasjon for Java. Eskil Blomfeldt (nå): Ser på en heterogen implementasjon for Java. Sigmund M. Nilssen (nå): Se mer på hvor fleksible generiske pakker er.
18 Mulighet 2: Slå sammen klasser fra flere generiske pakker til én Vi vil lage klassene City og Road på en annen måte. Vi tenker oss en pakke med klasser for datene som skal være med i City og Road: generic package GEOGRAPHYDATA expandable CityData, RoadData { class CityData {... class RoadData {... Vi har dessuten den gamle pakka: generic package GRAPH expandable Node, Edge { Bruk: inst GEOGRPHYDATA with CityData =>City, RoadData =>Road; inst GRAPH with Node =>City, Edge =>Road; expansion City {... Noe mer her?... expansion Road {... Noe mer her? Tanker: Hva skjer her om for eksempel CityData og Node hadde subklasser i pakkene? Går det bra? Skaper det noe interessant? Dette har et snev av noe som i det siste er kalt Traits (metode-samlinger som kan settes sammen på forskjellige måter for å danne klasser). Dette er også omtalt (av meg) som multippel statisk arv, og dette kan behandles ferdig i kompilatoren. Problem: Om for eksempel CityData og Node har vanlige superklasser vil vi få full multippel arv, som ikke kan behandles ferdig i kompilatoren.
19 En generisk pakke kan sees som en rolle-modell Noen generiske pakker Instansieringer av de generiske pakkene, der klasser fra forskjellige pakker er slått sammen
20 Mulighet 3: Privat instansiering Generiske pakker bør ha synlighetsregulering (private, public, etc.) som vanlige pakker, men kanskje noe mer: Anta at vi skal skrive en pakke DATABEHANDLER (generisk eller ikke), og at den trenger f.eks. et listesystem for å kunne holde på noen interne data. Vi har et slikt listesystem i den generiske pakken: generic package LISTSYSTEM expandable Elem{ class Head{ Elem first; class Elem{ Elem next; // Kan altså ekspanderes med bruker-data (generic) package DATABEHANDLER { private inst LISTSYSTEM Elem => DataPakke; expansion DataPakke { Data i pakkene Dette skal bety at alt som LISTSYSTEM-pakken gjør synlig utad er fullt synlig inne i pakka DATABEHANDLER, men utenfor denne er intet om LISTSYSTEM-pakken synlig. Dette gir nå en kraftig beskyttelse, ved at pakken DATABEHANDLER jo får sitt helt private sett av klassene i LISTESYSTEM. Om pakken LISTESYSTEM ikke hadde vært generisk, så hadde private import hjulpet lite: Alle kunne alle fått adgang til innholdet (inklusive statiske data) ved bare å gjøre en egen import av denne pakken.
21 Mulighet 4: Tillate formelle klasser som superklasser Dette tillates altså ikke i hverken generisk C# eller Java, og virtuelle superklasser tillates ikke i Beta (men for templates i C++ vet jeg ikke). For generiske pakker kan det imidlertid være mer fristende å tillate dette, siden alt her er så statisk, med et enkelt typesystem. Dette kan bl.a. gi mulighet til såkalte mixin-klasser, altså klasser som forutsetter visse egenskaper av en (ukjent) superklasse, og som da legger på visse ekstra egenskaper. Eksempel: Vi vil lage en mixin-klasse som for klasser som har boolske metoder eq og lt, legger på metodene ne, gt, leq og geq. En pakke som implementerer dette kan se slik ut: generic package ADDREL <T implements SimpleRel> { interface SimpleRel{ bool eq(t o); bool lt(t o); class FullRel extends T{ bool ne(t o) { return! eq(o); bool gt(t o) { class Car{ bool lt(car c){ ; bool eq(car c){ ; inst ADDREL<Car>; // Merk at det her ikke bør forutsettes at Car implemets SimpleRel på forhånd.
22 Mulighet 5: Kunne forandre navn inni klassene når en pakke instansieres Dette er en opplagt nyttig mulighet som det ikke er problematisk å lage en rimelig syntaks for. Merk at dette er svært uproblematisk, siden vi lager et helt nytt sett med klasser ved hver instansiering. Ser ikke her på noe konkret forslag. Mulighet 6: Lage enkel syntaks for en generisk pakke med bare én klasse Dette må nok gjøres for at det ikke skal bli for tungvindt å gjøre enkle ting. Fordel: Ved å trekke inn en del av de mulighetene som er diskutert her kan slike generiske klasser gies noen flere muligheter enn det som fins for eksempel i Java og C# På den annen side: Noen av de egenskapene som kan brukes fritt i generisk Java og C# (f.eks. full F-bounded polymorfisme) kan være problematisk å få inn.
Generiske mekanismer i statisk typede programmeringsspråk
Generiske mekanismer i statisk typede programmeringsspråk Stein Krogdahl INF-5110, 28 april 2005 Temaer: Hva er generiske mekanismer, og hvorfor har vi dem? Hovedtyper av generiske mekanismer Hovedstrategier
DetaljerGeneriske mekanismer i statisk typede programmeringsspråk
Generiske mekanismer i statisk typede programmeringsspråk Stein Krogdahl INF-5110, 27 april 2006 Temaer: Hva er generiske mekanismer, og hvorfor har vi dem? Hovedtyper av generiske mekanismer Hovedstrategier
DetaljerGeneriske mekanismer i statisk typede programmeringsspråk INF5110 April, 2009
Generiske mekanismer i statisk typede programmeringsspråk INF5110 April, 2009 Torsdag 30. april (skattedagen!): Mer om generering av maskinkode (Ferdig oppkopiert hefte deles ut) Tirsdag 5. mai: Mer av
DetaljerGeneriske mekanismer i statisk typede programmeringsspråk
Generiske mekanismer i statisk typede programmeringsspråk Dette stoffet er Pensum, og det er bare beskrevet her Mye her er nok kjent stoff for mange INF5110 7. mai 2013 Stein Krogdahl 1 Hvordan kunne skrive
DetaljerNOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl
NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 10/5-2011, Stein Krogdahl Oversikt over Javas class-filer og byte-kode Disse formatene ble planlagt fra start
DetaljerNOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse
NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse Dessverre litt få figurer INF 5110, 8/5-2012, Stein Krogdahl Byte-koden for Java og.nett (C#) http://en.wikipedia.org/wiki/java_bytecode_instruction_listings
DetaljerLitt om Javas class-filer og byte-kode
Litt om Javas class-filer og byte-kode INF 5110, 11/5-2010, Stein Krogdahl (Dessverre litt få figurer) Disse formatene ble planlagt fra start som en del av hele Java-ideen Bt Byte-koden gir portabilitet
DetaljerJavas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)
Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode) Disse foilene er pensum INF 5110, 30/4-2013, Stein Krogdahl Byte-koden for Java og.nett (C#) kan leses her: http://en.wikipedia.org/wiki/java_bytecode_instruction_listings
DetaljerRuntimesystemer - II. Funksjoner som parametere. Virtuelle metoder
Runtimesystemer - II Funksjoner som parametere Virtuelle metoder Parameteroverføring Call by value Call by reference Call by value-result Call by name 04/04/14 1 FUNKSJONER SOM PARAMETERE 04/04/14 2 Eksempel
DetaljerRepitisjonskurs. Arv, Subklasser og Grensesnitt
Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett
DetaljerEksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus
// class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen
DetaljerAnatomien til en kompilator - I
Anatomien til en kompilator - I program Symboltabell tekst tokens syntaks-tre beriket syntaks-tre Finne struktur i programmet OK i henhold til grammatikk? Preprocessor Makroer Betinget kompilering Filer
DetaljerOppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre
Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal
DetaljerDiverse eksamensgaver
Diverse eksamensgaver Noen har fått den idé å lage et språk hvor klasser kan ha noe tilsvarende byvalue-result -parametere. Klasser har ingen konstruktører, og by-value-result parametere spesifiseres som
DetaljerEnkle generiske klasser i Java
Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt
DetaljerINF Notater. Veronika Heimsbakk 10. juni 2012
INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N
DetaljerKapittel 7: Mer om arv
Kapittel 7: Mer om arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,
DetaljerRuntime-omgivelser Kap 7 - I
Runtime-omgivelser Kap 7 - I Generelt Språk som bare trenger statiske omgivelser Språk som trenger stakk-orienterte omgivelser Språk som trenger mer generelle omgivelser Vel så riktig å si at forskjellige
DetaljerArray&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister
Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java
Detaljer2012 2a. C rc; void main() { rc = new C (); rc.m2(); } } INF 3110/ INF /28/13 1
2012 2a Vi tenker oss i denne oppgaven at vi har et Java-lignende språk hvor metoder kan ha lokalt definerte metoder. Dessuten kan man deklarere variable og metoder også på ytterste programnivå. Dette
DetaljerINF1010 våren 2008 Uke 4, 22. januar Arv og subklasser
Emneoversikt subklasser INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Stein Gjessing Institutt for informatikk Mange flere eksempler på fellesøvelsene og neste forelesning 1 Generalisering - spesialisering
DetaljerArray&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre
Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF3110/4110 Programmeringsspråk Eksamensdag: 3. desember 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8 sider. Vedlegg:
DetaljerRuntimesystemer Kap 7 - I
Runtimesystemer Kap 7 - I Språk som bare trenger statisk allokering Språk som trenger stakk-orientert allokering Språk som trenger mer generell allokering Forskjellige slags begreper i et gitt språk krever
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
DetaljerSemantisk Analyse del III
Semantisk Analyse del III Typesjekking Kapittel 6.4 08.03.2013 1 Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
DetaljerBlood, SWAT and Tears - om storforsk-prosjektet SWAT: Semantics-preserving Weaving - Advancing the Technology
Blood, SWAT and Tears - om storforsk-prosjektet SWAT: Semantics-preserving Weaving - Advancing the Technology Stein Krogdahl OMS-seminar, 9. november 2005 Inndeling av presentasjonen: Om administrasjon,
DetaljerAnatomien til en kompilator - I
Anatomien til en kompilator - I 5/22/2006 1 Framgangsmåte for automatisk å lage en scanner Beskriv de forskjellige token-klassene som regulære uttrykk Eller litt mer fleksibelt, som regulære definisjoner
DetaljerEks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 5. juni 2013 Tid for eksamen : 14.30-18.30 Oppgavesettet er på : Vedlegg :
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 2. juni 2010 Tid for eksamen : 14.30-17.30 Oppgavesettet er på : 5 sider (pluss
DetaljerArv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {
Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere
DetaljerGjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerKap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars Dagens tema: Typer og typesjekking
Kap 6.4: Typesjekking Foiler ved Birger Møller-Pedersen Forelest av Stein Krogdahl 19. og 23. mars 2015 Dagens tema: Typer og typesjekking Hva er nå egentlig en «type» i et programmeringsspråk? Hvordan
DetaljerINF1010 våren Arv og subklasser del 1
INF1010 våren 2015 Torsdag 12. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering
DetaljerKonstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:
Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
Detaljer1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)
Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)
Detaljerclass Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }
Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere
DetaljerDatatyper og typesjekking
Datatyper og typesjekking Om typer generelt Hva er typer? Statisk og dynamisk typing Hvordan beskrive typer syntaktisk? Hvordan lagre dem i kompilatoren? Gjennomgang av noen typer Grunntyper Type-konstruktører
DetaljerMed Svarforslag UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. 3 sider (side 6, 7 og 8, rives ut, fylles ut og leveres)
Eksamen i : Med Svarforslag UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 3. juni 2009 Tid for eksamen : 14.30-17.30 Oppgavesettet er
DetaljerINF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 15. januar 2014 2. time Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder med parametre En metode uten parameter:
Detaljer1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)
Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)
DetaljerINF1010 våren Arv og subklasser del 1
INF1010 våren 2016 Torsdag 4. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering
DetaljerKodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007. Stein Krogdahl, Ifi UiO
Kodegenerering del 3: Tilleggsnotat fra AHU Samt litt om class-filer og byte-kode INF5110 V2007 Stein Krogdahl, Ifi UiO ASU, kap 9.5: Vi generer kode for én og én basal blokk Da er det lett å holde orden
DetaljerUNIVERSITETET I OSLO
Eksamen i : MED SVARFORSLAG UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 1. juni 2011 Tid for eksamen : 14.30-18.30 Oppgavesettet er
DetaljerINF1000: Forelesning 7
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 Eksamensdag : Tirsdag 5. juni 2007 Tid for eksamen : 14.30-17.30 Oppgavesettet er på : 6 sider (pluss vedlegg) Vedlegg
DetaljerINF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også
DetaljerBeskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015
Beskrivelse av programmeringsspråket Compila15 INF5110 - Kompilatorteknikk Våren 2015 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Compila15. Den
DetaljerIN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo
IN1010 våren 2018 Tirsdag 15. mai Repetisjon av subklasser og tråder Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Klassehierarki: Personbil Bil Klasser - Subklasser class Bil {
DetaljerEKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00
Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG
DetaljerINF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004
INF1010 Arv Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 Motivasjon Arv bruker vi så vi skal slippe å skrive oss i hjel. Når vi programmerer, prøver vi gjerne å modellere en del av verden ved hjelp
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på
DetaljerAlgoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1
Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting
DetaljerDagens tema: Sjekking
Dagens tema Dagens tema: Sjekking Navnebinding (obligatorisk oppgave 3) Biblioteket Logging Riktig bruk av navn (frivillig) Typesjekking (frivillig) Hele prosjektet Strukturen til kompilatoren vår f.pas
DetaljerINF1000: Forelesning 7. Konstruktører Static
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter
DetaljerPost-it spørsmål fra timen (Arv og subklasser)
Post-it spørsmål fra timen 30.01 (Arv og subklasser) Tegning Spørsmål: Skjønte ikke tegningene Hater tegningene. Lær meg å tegne. Mvh frustrert elev. Spørsmål: Datastruktur-tegning, og hvor mye detaljer
DetaljerINF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene
Dagens tema: INF 2100 8. september 2004 Mer om strukturen i treet og hvordan bygge det Testing av at navn er deklarert og brukt riktig Arbeid i gruppene neste uke: Oppgaver relevant for dette stadiet i
DetaljerIN 147 Program og maskinvare
Dagens tema Mer om C Cs preprosessor Allokering av variable Separat kompilering Programmet make Pekere i C Operasjoner på pekere Pekere og vektorer Referanseparametre Pekere til «alt» og «ingenting» Dynamisk
DetaljerINF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når
Detaljer< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»
< T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar
DetaljerVelkommen til INF5110 Kompilatorteknikk
Velkommen til INF5110 Kompilatorteknikk 15. januar 2013 Kursansvarlige: Stein Krogdahl [steink@ifi.uio.no] Ragnhild Kobro Runde [ragnhilk@ifi.uio.no] Henning Berg (oblig-ansvarlig) [hennb@ifi.uio.no] Kursområdet:
DetaljerINF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser
INF1010, 21. januar 2016 Klasser med parametre = Parametriserte klasser = Generiske klasser Stein Gjessing Inst. for Informatikk Universitetet i Oslo Først litt repetisjon fra i går class LagBiler { public
DetaljerLæringsmål for forelesningen
Læringsmål for forelesningen Objektorientering Abstrakte klasser og grensesnitt, redefinering av metoder Java-programmering Arv og bruk av abstrakte klasser Eclipse Undersøke instanser i Eclipse 1 Dagens
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 Eksamensdag : Tirsdag 6. juni 2006 Tid for eksamen : 09.00-12.00 Oppgavesettet er på : 5 sider Vedlegg : Intet Tillatte
DetaljerBOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl. 09.00 13.
BOKMÅL Side 1 av 5 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTERINGSEKSAMEN
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 og IN 110 Algoritmer og datastrukturer Eksamensdag: 14. mai 1996 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 4. juni 2008 Tid for eksamen : 14.30-17.30 Oppgavesettet er på : 7 sider Vedlegg
DetaljerPlan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk
Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring
Detaljerklassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin
INF1010 forelesning Lenkelister II Dette skrivet inneholder en oversikt over det jeg planlegger å forelese på andre forlesning om lenkelister. Det inneholder stort sett programeksempler med kommentarer
DetaljerIN1010 våren januar. Objektorientering i Java
IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som
DetaljerDel 3: Evaluere uttrykk
Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret
DetaljerMED SVARFORSLAG UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet
MED SVARFORSLAG UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF5110 - Kompilatorteknikk Eksamensdag : Onsdag 2. juni 2010 Tid for eksamen : 14.30-17.30 Oppgavesettet er
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Tirsdag 12. juni 2012 Tid for eksamen: 9:00 15:00 Oppgavesettet er
Detaljer- JAVA - generiske typer i programmeringsspråket. Universitetet i Oslo Institutt for informatikk. Endre Meckelborg Rognerud.
Universitetet i Oslo Institutt for informatikk Vurdering av generiske typer i programmeringsspråket - JAVA - Hovedfagsoppgave av Endre Meckelborg Rognerud Februar 2001 Forord Denne rapporten er resultatet
Detaljer1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 26. februar 2014 1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Vi tar utgangspunkt i dette programmet for
DetaljerListe som abstrakt konsept/datatype
Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider.
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 9. juni 2011 Tid for eksamen: 09.00 15.00 Oppgavesettet er på 5 sider. Vedlegg:
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:
DetaljerLøsnings forslag i java In115, Våren 1996
Løsnings forslag i java In115, Våren 1996 Oppgave 1a For å kunne kjøre Warshall-algoritmen, må man ha grafen på nabomatriseform, altså en boolsk matrise B, slik at B[i][j]=true hvis det går en kant fra
DetaljerVelkommen til INF Kompilatorteknikk
Velkommen til INF5110 - Kompilatorteknikk Kursansvarlige: Stein Krogdahl [steink@ifi.uio.no] Birger Møller-Pedersen [birger@ifi.uio.no] Eivind Gard Lund (hjelpelærer) [eivindgl@student.matnat.uio.no] Kursområdet:
DetaljerKapittel 8: Programutvikling
Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
DetaljerLøsningsforslag Test 2
Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.
DetaljerINF1010 - Seminaroppgaver til uke 3
INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar
DetaljerVelkommen til INF Kompilatorteknikk
Velkommen til INF5110 - Kompilatorteknikk Kursansvarlige: Stein Krogdahl [steink@ifi.uio.no] Birger Møller-Pedersen [birger@ifi.uio.no] Andreas Svendsen (hjelpelærer) [Andreas.Svendsen@sintef.no] Kursområdet:
DetaljerRepetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri.6,.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/5 Repetisjon: Statiske språk uten rekursive
DetaljerDet finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten
Interface, Abstract Class... i-120 : H-98 2a. Abstraksjon i JAVA: 1 Det finnes ingenting som kan gjøres med interface i-120 : H-98 2a. Abstraksjon i JAVA: 2 som kan gjøres med bruk av unntak i-120 : H-98
DetaljerVelkommen til. INF våren 2016
Velkommen til INF1010 - våren 2016 Denne uken (onsdag og torsdag): Om INF1010 Java datastrukturer Klasser med parametre i Java Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 INF1010
DetaljerDagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)
Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7) Repetisjon Språk med rekursjon (C3) og blokker (C4) Statisk link Dynamisk allokering (C5) Parameteroverføring 1/25 Forelesning 11 5.11.2003 Repetisjon:
DetaljerObligatorisk oppgave 1 INF1020 h2005
Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte
DetaljerEivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen
Eivind Gard Lund 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen Informasjon Semantikksjekk Kodegenerering Oblig 2 tilgjengelig på kurssiden Bygger på deres oblig 1 kode. Det er lagt ut
DetaljerBOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs
BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN
DetaljerBeskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012
Beskrivelse av programmeringsspråket Simpila INF5110 - Kompilatorteknikk Våren 2012 Her beskrives syntaksen og den statiske semantikken (hva som skal sjekkes av kompilatoren) til språket Simpila. Den dynamiske
DetaljerINF1010. Grensesnittet Comparable<T>
INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd
Detaljer