VARNING. Alternativ metod för att läsa XML filer XML - SAX. Ide till lösning. Inte parsa hela dokumentet på en gång
|
|
- Max Lind
- för 8 år sedan
- Visningar:
Transkript
1 Alternativ metod för att läsa XML filer Inte parsa hela dokumentet på en gång XML - SAX Inte bygga upp ett träd i minnet Istället ta element för element Upp till programmet att hantera informationen XML dokument Parser Program <?xml version="1.0" encoding="utf-8"?> <annikastuff> <values> <variable name="l1"> <value value="1" /> <value value="2" /> <value value="3" /> </variable> </values> <students> <student id="1" l1="0" l2="0" l3="0" name="kalle Anka" px="0" py="0" /> </students> </annikastuff> public void parseandprint( String filename ) DefaultHandler eventhandler = new MyEventHandler(); try SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setnamespaceaware( true ); SAXParser parser = factory.newsaxparser(); parser.parse( new InputSource( filename ), eventhandler ); catch ( ParserConfigurationException pce ) pce.printstacktrace(); catch ( SAXException se ) se.printstacktrace(); catch ( IOException ioe ) ioe.printstacktrace(); Ide till lösning VARNING Subklassa DefaultHandler Implementera startelement endelement Inte någon snygg lösning
2 public void startelement( String namespace, String localname, String qname, Attributes attr ) public void endelement(string uri, String localname, String qname) switch( currentlyparsing ) case 0:... switch( currentlyparsing ) case ANNIKA_STUFF: case ANNIKA_STUFF: if( localname == "values" ) currentlyparsing = 0; currentlyparsing = VALUES; else if( localname == "students") currentlyparsing = STUDENTS; case VALUES: else currentlyparsing = ANNIKA_STUFF; System.out.println( "Syntax error: Expected 'values' or 'students', got '" + localname + "' case STUDENTS: currentlyparsing = ANNIKA_STUFF; case VALUES: if( localname == "variable" ) currentlyparsing = VARIABLE; case VARIABLE: currentvariablename = attr.getvalue( "name" ); currentlyparsing = VALUES; variablevalues = new ArrayList<String>(); System.out.print( currentvariablename + " - " ); else printerror( "variable", localname ); for( String v : variablevalues ) System.out.print( v + " " ); case STUDENTS: System.out.println(""); if( localname == "student" ) currentlyparsing = STUDENT; case VALUE: // Anta att alla attribut är korrekt deklarerade currentlyparsing = VARIABLE; System.out.println( attr.getvalue( "name" ) + ", l1=" + attr.getvalue( "l1" ) + ", l2=" + attr.getvalue( "l2" ) + ", l3= " + attr.getvalue( "l3" ) + ", px= " + attr.getvalue( "p ", py=" + attr.getvalue( "py" ) ); case STUDENT: else currentlyparsing = STUDENTS; printerror( "student", localname ); > java Demo hejsan l l2-4 5 l px py Kalle Anka, l1=0, l2=0, l3= 0, px= 0, py=0 Kajsa Anka, l1=0, l2=0, l3= 0, px= 0, py=0 Knatte Anka, l1=0, l2=0, l3= 0, px= 0, py=0 Fnatte Anka, l1=0, l2=0, l3= 0, px= 0, py=0 Tjatte Anka, l1=0, l2=0, l3= 0, px= 0, py=0 Andra objektorienterade språk Jan Erik Moström Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till Objektorienterade programmeringsspråk Smalltalk, Eiffel och (Java) är rena objektorienterade språk C++ och Ada stödjer objektorientering Det går att programmera objektorienterat i C eller assembler för den delen Språket måste stödja någon form av inkapsling. T.ex. på fil-nivå
3 C++ Skapades i början av 80-talet av Bjarne Stroustrup (AT&T Bell Labs) 1985 släpptes C++ kommersiellt och fick snabbt spridning inom UNIX-värden Största skillnaderna mot java Multipelt arv Inte Garbage Collection som standard Inte bara klasser (vi kan skriva funktioner också) Alla klasser inte i samma arvshierarki (ingen Object klass) Möjlighet till operatoröverlagring Klassbibloteket (mindre i c++) Inte plattformsoberoende i samma grad Målen med C++ Bakåtkompabilitet med ANSI C i så hög grad som möjligt Inkludera nya programmeringsparadigmer som objektorientering utan att för den skull offra prestanda. C++ har: Hårdare typkontroll än C Mindre behov av preprocessorn, eftersom man har möjlighet att skriva funktioner som fungerar som makron, samt möjlighet att definiera konstanter utan att använda sig av #define. Har möjlighet att skicka parametrar via call-byreference utan att använda sig av adressoperatorn & Ett stort bibliotek av färdiga klasser och algoritmer Möjlighet till multipelt arv 483 Templates class Complex // Constructor Complex(double rl=0, double im=0) real = rl; imag = im; // Member operators Complex operator+ (Complex operand2) const; Complex operator* (Complex operand2) const; // Data members double real; // real and imaginary parts double imag; // of a complex number // I/O operators friend istream& operator>>(istream& is,complex& innum); friend ostream& operator<<(ostream& os,complex outnum); ; 484 Complex Complex::operator+ (Complex operand2) const Complex result(real+operand2.real, return result; int main(void) Complex tal1; //0 imag+operand2.imag); Complex tal2(1,2); //1+2i cout << tal1+tal2 << endl; return 0; Allokering/deallokering av objekt Var allokera objekten? Tre sätt : Statiskt av kompilatorn Dynamiska objekt på stacken Eller på heapen med new I Java new det enda sättet -> uniform metod Inga pekare som måste derefereras a la C++ C++ har alla sätten - och alla problemen
4 Vi använder new, sen då? Arv i C++ Hur deallokera objekten? ->Explicit Problem med dangling pointers C++ har delete -> Implicit Har vi i java i form av Garbage Collection 487 class Fordon ; int branslemangd; tanka(int liter); int getbransle(); class Bil : public Fordon ; int antalpass; 488 Omdefinition Multipelt arv class Fordon int branslemangd; void tanka(int liter); int getbransle(); ; Anställd Person Forskarstud Studerande class Bil : public Fordon int antalpass; void tanka(int liter); ; 489 class Forskarstuderande : public Anstalld, public studerande ; 490 Problem med multipelt arv Omdiskuterat behov Namnkonflikter kan uppstå Dubbla data (löses med virtuellt arv) Använd med försiktighet 491 Olika typer av arv i C++ Public Används alltid om det inte finns något mkt bra skäl till att använda någon av de andra. public och protected metoder behåller sin status Protected public och protected metoder/attribut som ärvs blir protected i subklassen Private public och protected metoder/attribut som ärvs blir private i subklassen Attribut/metoder som är deklarerade private blir alltid oåtkomliga i basklassen 492
5 Virtuella funktioner Statisk bindning är default - nyckelordet virtual används för att få dynamisk bindning class Figur ; virtual double getarea(); class Rect : public Figur ; double b,h; double getarea() return b*h; // virtuell 493 Virtuella anrop med pekare class Circ: public Figur double r; double getarea() return 3.14*r*r; ; Figur *fp[2]; fp[0]=new Circ(5) fp[1]= new Rect(3,4); for(int i=0;i<2;i++) cout << Area << fp->getarea(); 494 Virtuella anrop med referens void skrivutarea(figur& f) cout << Arean är << f.getarea() <<. ; Cirk jorden( /m_pi/2); skrivutarea(jorden); Referensanrop behåller datat Abstrakt basklass Fångar gemensamma egenskaper Påtvingar ett gränssnitt Går ej skapa objekt från Med äkta (pure) virtuell funktion: class Figur virtual double getarea() = 0; ; Eller med protected konstruktor Virtuellt arv Används vid multipelt arv för att se till så att data inte finns i flera kopior class Queue ; class CashierQueue : virtual public Queue ; class LunchQueue : virtual public Queue ; class LunchCashierQueue : public LunchQueue, public CashierQueue ; Algoritmbiblioteket (STL) (f.d.) Standard Template Library Samlingstyper (containers) Algoritmer Funktionsobjekt Adaptrar
6 Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer Algoritm sort find copy vect list stack deque Samling(Datastruktur) Datatyp int char double[] Bil Person 499 forts designstrategi Effektiva algoritmer Använder enbart mallar i C++ Inga arvshierarkier eller virtuella funktioner Ej objekt-orienterat Bygger på forskning om generiska algoritmer av Stepanov/Lee/Musser General Electric, AT&T Bell, HP Presenterades för ANSI/ISO C++ 93 Mycket gott mottagande 500 Sekvenser Samlingstyper vector<t>,deque<t>,list<t> Associativa set<t,c>, map<k,v,c>, multiset<t,c>, multimap<k,v,c> Adaptrar stack<t>, queue<t>, priority_queue<t,c> impl t.ex. som vector, deque, eller list Anm. C comparator. Funktionsobjekt för sortering 501 Algoritmer Ca 70 st Opererar på intervall Oberoende av datastruktur Sekvensalgoritmer for_each, find, copy, transform, replace Sortering sort, stable_sort, binary_search, max_element Numeriska accumulate, inner_product 502 Ett litet exempel void sort_file(char *name) ifstream file(name); istream_iterator<string> in(file),eof; vector<string> strs; copy(in,eof,back_inserter(strs)); sort(strs.begin(),strs.end()); copy (strs.begin(),strs.end(), ostream_iterator<string>(cout, \n )); 503 C# Utvecklat av Microsoft Designmål Enkelt objektorienterat språk Robusthet Programmerarportabilitet Alla typer i språket ärver en klass (System.Object) 504
7 Exempel usingsystem; //Aclassfortwo-dimensionalobjects. classtwodshape doublepri_width;//private doublepri_height;//private //propertiesforwidthandheight. publicdoublewidth getreturnpri_width; setpri_width=value; publicdoubleheight getreturnpri_height; setpri_height=value; publicvoidshowdim() Console.WriteLine("Widthandheightare"+ width+"and"+height); 505 //AderivedclassofTwoDShapefortriangles. classtriangle:twodshape stringstyle;//private //Constructor publictriangle(strings,doublew,doubleh) width=w;//initthebaseclass height=h;//initthebaseclass style=s;//initthederivedclass //Returnareaoftriangle. publicdoublearea() returnwidth*height/2; //Displayatriangle'sstyle. publicvoidshowstyle() Console.WriteLine("Triangleis"+style); 506 publicclassshapes3 publicstaticvoidmain() Trianglet1=newTriangle("isosceles",4.0,4.0); Trianglet2=newTriangle("right",8.0,12.0); Console.WriteLine("Infofort1:"); t1.showstyle(); t1.showdim(); Console.WriteLine("Areais"+t1.area()); Console.WriteLine(); Console.WriteLine("Infofort2:"); t2.showstyle(); t2.showdim(); Console.WriteLine("Areais"+t2.area()); 507
Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo
Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till
Dynamisk bindning och polymorfism
Dynamisk bindning och polymorfism I C++ är pekare till basklasser polymorfa, dvs de kan peka på objekt av en subklass typ Vid statisk bindning sker all bindning vid kompileringen -> Vid ett metodanrop
Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer.
Algoritmbiblioteket (STL) (f.d.) Standard Template Library Samlingstyper (containers) Algoritmer Funktionsobjekt Adaptrar Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper,
F2: Krav på objektorienterat språk
Institutionen för datavetenskap Umeå Universitet F2: Krav på objektorienterat språk Objektorienterad programmering för ingenjörer, VT-04 Innehåll Krav på objektorienterat språk Avvägningar vid design av
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.
Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42
Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser
Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer
Innehåll EDAF30 Programmering i C++ 8. Klasser; resurshantering och polymorfism Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Klasser 2 Operatorer 3 Klasser, resurshantering Rule of three Move semantics
Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap
Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser. Vi får också möjlighet att referera
Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {
Innehåll EDAF30 Programmering i C++ Arv. Polymorfism. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Kort om dynamisk polymorfism Virtuella funktioner 2 Arv i C++ Konstruktorer och destruktorer Tillgänglighet
Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv
Innehåll EDAF30 Programmering i C++ 9. Polymorfism och arv Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Klasser Polymorfism och arv Konstruktorer och destruktorer Tillgänglighet Arv utan polymorfism
Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33
Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation
Vad är en klass? Övning 2. Konstruktorer. ffl copy-konstruktorn tar en instans av klassen som. ffl default-konstruktorn tar inga argument och kan
Vad är en klass? Övnin 2 Daens ämne är klasser och hur de hanteras. Vi kommer att bya upp ett exempel stevis och illustrera en hel del möjliheter, men också problem och saker man bör vara vaksam på. ffl
Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar
Innehåll EDAF30 Programmering i C++ 3. Mer om klasser. Funktionsanrop Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Klasser pekaren this const för objekt och medlemmar Kopiering friend inline 2 Funktionsanrop
Innehåll. Pekare Exempel
Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.
Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv
Programsystem konstruktion med C++ (2D1387) övning 2 klasser och arv Ronnie Johansson rjo@nadakthse grupp 4 2003 09 25 Innehåll Klasskonstruktorer och initieringslistor Klassdestruktorer Åtkomstkontroll
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Klas Arvidsson Institutionen för datavetenskap 1 / 33 UML UML är ett grafiskt språk som (bland mycket annat) används för
Innehåll. Pekare Exempel
Innehåll EDAF30 Programmering i C++ Avslutning. Sammanfattning och frågor 1 Syntax, förklaringar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Stack-allokering Heap-allokering: new och delete 3 Avslutning.
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2009-04-15 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.
Det objektorienterade synsättet A - 1 Objekt A - 2 Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med. De enskilda variablerna i programmet, de s.k. objekten,
TDDC76 Programmering och datastrukturer
TDDC76 Programmering och datastrukturer Arv, polymorfi och objektorienterad programmering Oskar Holmström Institutionen för datavetenskap Agenda 1 Pekare 2 Arv 3 Statisk bindning 4 Polymorfi 5 Destruktorer
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Programsystemkonstruktion med C++
Programsystemkonstruktion med C++ Övning 2 Daniel Aarno bishop@kth.se Översikt övning 2 Klasser Konstruktorer Destruktorer Arv Virtuella funktioner Abstrakta klasser Operatorer Templateklasser Templatefunktioner
Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning:
2D1387, Programsystemkonstruktion med C++ 00/01 1 Del3 Klassanvändning, operatorer och pekare Ämnesområden denna föreläsning: Synlighet Överlagring av operatorer Slide 1 Vänner till klasser och funktioner
Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26
Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623
5 Arv och dynamisk bindning FIGUR
5 Arv och dynamisk bindning Arv är en av hörnstenarna i objektorienterad programmering. Med hjälp av arv kan man skapa underhållsvänliga och förändringsvänliga system. Att hitta arvsrelationer är en viktig
Arv. Objektorienterad och komponentbaserad programmering
Arv Objektorienterad och komponentbaserad programmering Arv Regel nr 1: Ett objektorienterat språk ska tillåta inkapsling av data Regel nr 2: Ett objektorienterat språk ska tillåta arv Regel nr 3: Ett
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Tillämpad programmering
Tillämpad programmering C++ objekt Johan Montelius 1 struct struct Person { string name; int age; ; Person p; p.name = Joe ; p.age = 42; cout
Introduktion till arv
Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering
Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet
Kapitel 3 Klassanvändning Operatorer Pekare Kapitel 3 - Klassanvändning, operatorer och pekare Vänner till klasser och funktioner Virtuella funktioner och polymorfi Abstrakta basklasser och strikt virtuella
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (type casts) Explicita, namngivna typomvandlingar (C++-11)
Innehåll EDAF30 Programmering i C++ 8. Typomvandlingar. Klasser: operatorer och polymorfism. 1 Typomvandlingar Sven Gestegård Robertz Datavetenskap, LTH 2017 2 Klasser Operatorer 3 Polymorfism och arv
Programsystemkonstruktion med C++: Övning 2. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 2 Karl Palmskog palmskog@kth.se september 2010 Specalfunktioner i klasser Konstruktorer i konstruktorerna för en klass initieras klassens medlemmar initialvärden
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
TDIU20 - Objektorienterad programmering i c++ - föreläsning 4
TDIU20 - Objektorienterad programmering i c++ - föreläsning 4 Pontus Haglund Department of Computer and information science 1 Vad gjorde vi förra gången? Felhantering Operatorer Typkonvertering 2 Grundläggande
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser
Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion
Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )
TDDC76 PoD OH Föreläsning C++ 83 Operatoröverlagring endast operatorsymboler definierade i C++ kan överlagras + - * / % ^ & ~! > = += -= *= /= %= ^= &= = = < > = ==!= && ++ -- -> ->*, [ ]
Det finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Imperativ programmering. Föreläsning 4
Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
Kursens mål. Objektorienterad programmering. Kursupplägg. Tillgodoräknande. Kursbok. Labsalar
Kursens mål Objektorienterad programmering för ingenjörer Ge kännedom om principer och vissa färdigheter i metoder för objektorienterad programvaruutveckling Ge grundläggande färdigheter i programspråket
Objektorienterad Programmering (OOP) Murach s: kap 12-16
Objektorienterad Programmering (OOP) Murach s: kap 12-16 2013-01-28 1 Winstrand Development Objektorienterad Programmering Förkortas OOP Objektorientering innebär att man delar in koden i olika block,
Synlighet. Namespace Scope-operatorn Klasser Vänner
Synlighet Namespace Scope-operatorn Klasser Vänner Synlighet Ett problem med moduler i C är att alla variabel- och funktionsnamn ligger globalt synliga. C++ botar detta genom att införa det mycket användbara
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
DAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Klasshierarkier - repetition
Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet
TDIU20 - Objektorienterad programmering i c++ - föreläsning 6
TDIU20 - Objektorienterad programmering i c++ - föreläsning 6 Pontus Haglund och Gustav L'estrade anpassade slides av Klas Arvidsson Department of Computer and information science 1 Arv (Specialisering)
Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29
Programmering i C++ EDA623 Mallar EDA623 (Föreläsning 12) HT 2013 1 / 29 Mallar Innehåll Klassmallar Funktionsmallar EDA623 (Föreläsning 12) HT 2013 2 / 29 Containerklasserna vector, deque och list utgör
Objektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
Högskolan Dalarna sid 1 av 5 Data-avdelningen Hans-Edy Mårtensson
Högskolan Dalarna sid 1 av 5 Lösningsförslag till TENTAMEN I OBJEKTORIENTERAD PROGRAMMERING 5p,för D2 1999-01-14 1. a) Systemavgränsningen är dokument som innehåller en kortfattad beskrivning av vad som
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser
Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla
Innehåll. Parametriserade typer. Klassmallar. Klassmallen Vektor Konstructor med std::initializer_list. Klassmallen Vektor Medlemsfunktioner
Innehåll EDAF30 Programmering i C++ 10. Generisk programmering. Mallar och funktionsobjekt Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Funktionsobjekt Mallar med variabelt antal argument 10. Generisk
Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.
Innehåll EDAF30 Programmering i C++ Generisk programmering med templates (mallar) Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Funktionsmalllar 2 Generisk programmering med templates (mallar) 2/1 Generisk
TDIU20 - Objektorienterad programmering i c++ - föreläsning 3
TDIU20 - Objektorienterad programmering i c++ - föreläsning 3 Pontus Haglund Department of Computer and information science 1 Vad har vi gjort hittills 2 Felhantering 3 Operatorer 4 binära operatorer 5
Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng
Collections Collections "Envisa" objekt Klasserna Bofstream och Bifstream Definition av metoder i klasserna Bifstream och Bofstream Klassen Streng Klasser som skall bli "envisa" Klassen Anstelld skall
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:
2D1387, Programsystemkonstruktion med C++ 00/01 1 Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning: Klasser, åtkomst Medlemmar, medlemsfunktioner, inline Slide 1 Konstruktorer Destruktorer
Objektorienterad programmering. Grundläggande begrepp
Objektorienterad programmering Grundläggande begrepp Hur beskriver vi objekt? Vill ha en representationsoberoende beskrivning Abstrakta datatyper! Data Operationer Objekt Representerar en verklig eller
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x
Generell (template) programmering Funktionsobjekt och funktionspekare Iteratorer Algoritmer Effektiv C++ Slutliga tips Genomgång av gammal tenta Daniel Aarno bishop@kth.se 2 int compare(int i1, int i2)
Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar
Innehåll EDAF30 Programmering i C++ 9. Polymorfism och arv Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Typomvandling 2 Klasser Polymorfism och arv Konstruktorer och destruktorer Tillgänglighet Arv
KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar
KLASSER Inkapsling Abstrakt datatyp Public och private Klassmedlemmar Datamedlemmar Funktionsmedlemmar Initiering av objekt Konstruktor Ta del av objektets tillstånd Förändra objektets tillstånd Avinitiera
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :
Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder
Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i
Tillämpad programmering
Tillämpad programmering C++ polymorfism overload, cast, ärvning, template Johan Montelius 1 polymorfism Att se och använda en variabel, ett objekt eller en funktion i olika former overload olika versioner
ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00
DD2387 Programsystemkonstruktion med C++ Tentamen 1 Torsdag 7 januari 2016, 14:00-18:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på både fram- och
Objektorientering - Arv och polymorfi
Objektorientering - Arv och polymorfi För kurserna TDDC76 och TDIU20 Klas Arvidsson Institutionen för datavetenskap 1 / 38 UML UML är ett grafiskt språk som (bland mycket annat) används för att beskriva
TENTAMEN CD5250. Objektorienterad programutveckling med C++, 5p. Datum: , Tid: 14:00-19:00
TENTAMEN CD5250 Objektorienterad programutveckling med C++, 5p Max poäng: 40 Betygsgränser: 3: 20 4: 28 5: 36 Datum: 1999-06-01, Tid: 14:00-19:00 Ansvarig: Ivica Crnkovic Upp till 5 poäng kan komma från
Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga
Historik: OOP Simula-67 Norge, 1967 Byggde på Algol-60, avsett för simulering Garbage collection, arv, klasser (inte olikt Java) Smalltalk, Alan Kay, Xerox, 70-tal Introducerade begreppet objekt-orienterad
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Innehåll. 1 Typdeklarationer och typomvandling 2 Resurshantering. 3 Objektorientering, kort repetition. 4 Klasser
Innehåll EDAF30 Programmering i C++ Resurshantering. Objektorientering. Klasser. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Typdeklarationer och typomvandling 2 Resurshantering Stack-allokering Heap-allokering:
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering
och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering
F8: Typkonvertering i C++
Institutionen för datavetenskap Umeå Universitet F8: Typkonvertering i C++ Objektorienterad programmering för ingenjörer, VT04 Innehåll Implicit konvertering Konverteringskonstruktor Konverteringsoperator
Innehåll. Resurshantering. Resource handles. Minnesallokering. Minnesallokering Exempel: allokering på stacken. 6. Resurshantering
Innehåll EDAF30 Programmering i C++ 6. Resurshantering Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Resurshantering Stack-allokering Heap-allokering: new och delete 2 Smarta pekare 3 Klasser, resurshantering
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
Tentamen i TDP004 Objektorienterad Programmering Teoretisk del
Tentamen i TDP004 Objektorienterad Programmering Teoretisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
grundläggande C++, funktioner m.m.
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
1 Namnkontroll (NameControl)
1 Namnkontroll (NameControl) När en ny variabel, ett objekt, en konstant o s v introduceras måste programmeraren namnge denna. Allting identifieras m h a namn. När ett program består av väldigt många komponenter
F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1
Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan
Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel
Föreläsning 3 Innehåll Generiska klasser Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Man kan deklarera en eller flera typparametrar när man definierar
Polymorfi. Objektorienterad och komponentbaserad programmering
Polymorfi Objektorienterad och komponentbaserad programmering Polymorfi, mångtydighet Polymorfi innebär att en viss konstruktion kan exekveras på olika sätt Överlagring av metoder ger ett polymorft beteende
Föreläsning 3: Booleans, if, switch
TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt
Övningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt