Föreläsning 11 Genomgång av inlämningsuppgiften
|
|
- Lina Lundqvist
- för 6 år sedan
- Visningar:
Transkript
1 *:85/ID200V C++ HT07 Föreläsning 11 Genomgång av inlämningsuppgiften Inluppen: exempel på en liten tillämpning Vandring över skärmen med piltangenterna När markören hamnar över en knapp visas knappen med omvänd färg. Om man då trycker på RETURN utförs handlingen (värdet i displayen ökas eller minskas med 1, eller programmet avslutas). Komponenterna behöver inte vara inramade Längst ner en meny: vänster/högerpilar byter alternativ, RETURN utför handlingen. Om markören finns inom menyn fungerar tangenterna +, - och q som kortkommandon. Obs! Exemplet är mycket enkelt! Bild 2 1
2 Ett större exempel Mail-programmet Pine. Komponenterna är inte inramade, spänner över hela fönsterbredden. Lägg märke till menyns utformning. Bild 3 Samma exempel, annan bildskärmsbild Även i Pine beror tangentkommandons betydelse på var markören befinner sig. Scrollande delfönster o.s.v. är inte så svåra att göra, men de ingår inte i den obligatoriska delen av uppgiften Bild 4 2
3 Åter till det lilla exemplet: skiss på tillämpningsprogrammet class Value{ int val; public: void oka() { val++; // Och visa nya värdet! } void minska() { val--; // Och visa nya värdet! } }; int main(){ Value v; Session ses; // Skapa displayen så att v kan visa värdet där // Skapa knappen för öka, koppla till v.oka // Skapa knappen för minska, koppla till v.minska // Skapa knappen för sluta, koppla till exit // Skapa menyn // Skapa menyvalet +, koppla till v.oka // Skapa menyvalet -, koppla till v.minska // Skapa menyvalet q, koppla till exit // Skapa kortkommandot +, koppla till v.oka // Skapa kortkommandot -, koppla till v.minska // Skapa kortkommandot q, koppla till exit ses.run(); } Tillämpningen anger vid skapandet av skärmobjekten var på skärmen de skall vara, vad som skall stå i dem o.s.v. Bild 5 Inlämningsuppgiften Skapa (början till) ett klassbibliotek med komponenter för sådana tillämpningar Obligatoriska komponenter: etikett (label), knapp, editerbar sträng, meny, sammansatt komponent session Bestäm själva detaljutformningen (inramade komponenter eller ej, eller både och, färganvändning osv) Biblioteket skall vara förberett för utbyggnad, dvs utformat mer generellt än vad som krävs just här För användaren (tillämpningsprogrammeraren): bekvämt men flexibelt, dvs implementerade defaultbeteenden men möjlighet att ändra Internt: hög grad av uppdelning, varje klass sköter sina naturliga uppgifter Bild 6 3
4 Tilläggskrav på implementering Datasamlingar implementerade med STL-behållarklasser Genomgångar, sökningar osv med generiska algoritmer från standardbiblioteket Adaptorer för funktionsobjekt (bind1st, bind2nd, mem_fun osv) används där det är möjligt, egna funktionsobjekt skapas annars. Kopplingar till tillämpningsklassers metoder sker genom medlemsfunktionspekare. Komponentobjekten hanteras via referensräknande pekarklasser. Biblioteket reagerar på felaktigheter (överlappande komponenter, komponenter utanför skärmarean osv) genom att generera undantag. Icke-triviala medlemsfunktioner definieras utanför klassdefinitioner (gäller även mallar). Deklarationer av klasser i headerfiler, definitioner av medlemsfunktioner och hjälpfunktioner i implementeringsfiler (gäller inte mallar eller infogade (inline) funktioner). Hög grad av uppdelning i filer - helst varje klass på egen fil (använd make!). Bild 7 Förenklingar och önskemål Förenklingar: Icke-överlappande komponenter Önskemål: Kontroll av vilken komponent markören befinner sig i, kontroll av om komponenter överlappar varandra, eventuell beräkning av position för centrering av text osv är operationer som har att göra med rektanglar. Skapa gärna en klass rektangel med denna funktionalitet som sedan kan användas i komponentklasserna, gröta inte ner komponenterna eller sökfunktionerna med koordinataritmetik. Bild 8 4
5 En möjlig arkitektur för exemplet (instansexempel) Session getcont setcont run content remove Knapp öka Knapp minska Knapp sluta Menyvalen Display Meny + - q q + - main v 7 öka minska Ett tillämpningsobjekt Bild 9 Rectangle Förslag till grov klasstruktur contains Passive handle_event Component erase enter leave handle_event Edit_string Button Compund handle_event handle_event handle_event get_text remove Menu handle_event Label set_text Session getcontent setcontent run Action_base perform Action<> Ptr<> * -> perform Bild 10 5
6 Grov beskrivning av klasser Rectangle innehåller skärmkoordinater för en rektangulär area och medlemsfunktioner för koordinataritmetik, t.ex. contains() som tar en punkt (kolumnoch radnummer) och returnerar om denna punkt ligger inom dess area. Är mest till för hålla koordinataritmetik separerad från den övriga koden för komponenterna. Component den egentliga rotklassen i hierarkin. Borde innehålla en rent virtuell medlemsfunktion () som implementeras i subklasserna och ritar upp komponenten på skärmen; en rent virtuell medlemsfunktion handle_event() som tar en Event-struct (så att komponenten kan se vad det var för tangent och var den trycktes) och returnerar ett booleskt värde (true om komponenten hanterat händelsen, false annars); två virtuella funktioner enter() och leave() som borde vara implementerade som tomma funktioner men kan överskuggas av subklasser om man vill att något speciellt skall hända när markören flyttas in i komponentens område resp. flyttas ut därifrån. Innehåller även icke-virtuell funktion erase() Passive rotklassen för passiva komponenter, kan implementera handle_event()- medlemsfunktionen så att den alltid returnerar false - passiva objekt reagerar inte på några händelser Bild 11 Label lövklass, implementerar () som skriver ut texten på skärmen Edit_string lövklass, editerbar sträng som implementerar handle_event(): den reagerar på skrivbara tecken genom att lägga in dem i en intern sträng och skriva ut den förändrade strängen på skärmen samt även på delete-tangenten och rubout-tangenten genom att ta bort tecken ur strängen. Den implementerar även () och har en egen medlemsfunktion get_text(). Denna klass borde implementeras sist. Button lövklass, implementerar () och handle_event(): den reagerar på RETURNtangenten genom att anropa någon medlemsfunktion i något objekt av någon klass i tillämpningen. Måste alltså ha en koppling till tillämpningen (en Action_base *, se nedan Action och Action_base). Bild 12 6
7 Compound klassen för sammansatta skärmobjekt. Borde innehålla en datasamling för de ingående skärombjekten (lämpligen en vector med "pekare" till skärmobjekt) och en datasamling med kortkommandon (lämpligen en map med tangentkoder som nycklar och Action_base-pekare som värden - se Action och Action_base). Borde ha två funktioner (): en för att era komponenter och en för att era kortkommandon, samt funktionen remove() för borttagning av komponenter. Implementerar handle_event() genom att leta upp den komponent inom vars area händelsen inträffat och anropa dess handle_event(). Om komponenten svarar att den inte hanterar denna händelse (eller om händelsen inträffat utanför någon ingående komponent) så kontrolleras om detta objekt självt kan hantera händelsen (t.ex. genom att titta i kortkommando -samlingen). Medlemsfunktionen () implementeras genom att gå igenom de ingående komponenterna och anropa deras (). Bild 13 Menu egentligen ett sammansatt objekt vars ingående komponenter endast kan vara knappar. Dessutom borde piltangenter flytta markören till nästa/föregående knapp och knapparna borde ligga bredvid varandra. Obs dock att Meny inte kan vara en subklass till Compound - ett subklassobjekt skall kunna användas i alla de sammanhang där ett basklassobjekt förväntas - till ett Compound-objekt kan man era godtyckliga komponenter, men det kan man inte till ett Menu-objekt. Däremot borde Menu implementeras genom att innehålla ett Compound-objekt och de flesta medlemsfunktioner i Menu kommar bara att innehålla anrop av motsvarande funktion i det inneslutna Compound-objektet. En bra sak vore om -funktionen för knappar i Menu inte tog en färdigskapad knapp utan bara info om vad som skall stå på knappen och vad den skall kopplas till, då kan Menu-objektet räkna ut vilka koordinater nästa knapp i menyn skall ha och skapa knapp-objektet självt, innan det skickas vidare till () i det inneslutna Compund-objektet. Några design-beslut om hur menyerna skall se ut (stående, liggande, knappstorleken, hur kan tillämpningen styra detta...) måste göras i så fall. Bild 14 7
8 Action och representerar en koppling mellan biblioteksklasser och tillämpningen. Action_base Innehåller en pekare till ett objekt av en tillämpningsklass, en medlemspekare till en medlemsfunktion i denna klass samt medlemsfunktionen perform() som anropar denna medlemsfunktion hos detta objekt. Eftersom tillämpningsklassen är okänd måste Action vara en mall. Eftersom man vill kunna ha objekt av olika instansieringar av denna mall i samma datasamling (samlingen av kortkommandon i ett Compound-objekt) så bör man skapa en basklass (som inte är en mall) till Action, nämligen Action_base. Denna basklass borde innehålla en virtual-deklaration av medlemsfunktionen perform(). I de övriga biblioteksklasser där man vill ha en koppling till tillämpningars objekt och medlemsfunktioner kan man nu ha en pekare till Action_base, som alltså kan peka ut objekt av olika instansieringar av Action. Den föreslagna klassen Action representerar en förbindelse med en medlemsfunktion i ett objekt. Man kan tänka sig att en tilläpmning även skulle vilja kunna skapa en koppling mellan bibliotekskomponenter och fristående funktioner i tillämpningen. Vill man förbereda för det kan man göra en specialisering av Action-mallen där typen man specialiserar för är en funktionspekartyp och där Action-klassen innehåller en funktionspekare istället för en objektpekare och en medlemsfunktionspekare. Bild 15 Session representerar hela terminalskärmen. Innehåller ett sammansatt objekt som i sin tur innehåller skärmobjekten. Har medlemsfunktionerna getcontent() för att returnera en pekare till det sammansatta objektet och setcontent() för att byta ut det mot ett annat. Tillämpningen skapar ett Session-objekt, erar komponenter och kortkommandon till dess Content och anropar sedan funktionen run(). run() innehåller en loop där man läser in nästa händelse och skickar denna händelse till rätt komponent. Förutom händelseinläsning är gången precis som för ett sammansatt objekts händelsehantering. Bild 16 8
Operatorer för medlemspekare
Medlemspekare Ibland uppstår behovet att peka ut en viss medlem, som skall behandlas i olika objekt. C++ har begreppet medlemspekare (pointer to member) för sådana situationer (har ingen motsvarighet i
Tentamen *:85/2I4123 C
DSV Sid 1(6) *:85/2I4123 Jozef Swiatycki 2006-01-21 Tentamen *:85/2I4123 C++ 2006-01-21 Denna tentamen består av fyra uppgifter som tillsammans kan ge maximalt 30 poäng. För godkänt resultat krävs minst
SP:PROG3 HT12 Tenta 2013-01-19
DSV SU/KTH sid 1 (5) SP:PROG3 SP:PROG3 HT12 Tenta 2013-01-19 Tentan består av tre uppgifter. Max poäng är 30. För betyget E (godkänd) krävs minst 18 poäng och minst en poäng på varje uppgift. Betygskriteria
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
Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Föreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
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
Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering
Övriga byggstenar Beroenden Pekare till funktioner Övriga byggstenar Beroenden er Definitioners synlighet Funktionspekare Icke-medlemsfunktioner Medlemsfunktioner 2D1387 Programsystemkonstruktion med C++
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
Tentamen *:58/ID100V Programmering i C Exempel 3
DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst
DD2387 Programsystemkonstruktion med C++ Tentamen 2
DD2387 Programsystemkonstruktion med C++ Tentamen 2 Måndagen den 10 november 2014, 08:00-12:00 Introduktion Skriv dina svar på separata papper, dessa scannas in efter inlämning. Du kan skriva på båda sidor.
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
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.
Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö Kö (ADT) En kö fungerar som en kö. Man fyller på den längst bak och tömmer den längst fram
Grafiska användargränssnitt i Java
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har
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
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
Tentamen i Objektorienterad modellering och design Helsingborg
Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng
if (n==null) { return null; } else { return new Node(n.data, copy(n.next));
Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls
Intro till standardbiblioteket. Eric Elfving
Intro till standardbiblioteket Eric Elfving 1 Behållare (containers) 2 Iteratorer 3 Algoritmer 15 mars 2018 2 / 13 Bibliotekets behållare delas in i tre grupper: Sekevensbehålare (Sequence containers)
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
Grafiska användargränssnitt i Java
jonas.kvarnstrom@liu.se 2017 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Till stor del ersatt av Swing: Mer omfattande,
Malmö högskola 2007/2008 Teknik och samhälle
Laboration 12 Avsikten med denna laboration är att du ska göra några grafiska program. Börja med att skapa paketet laboration 12. Grundläggande uppgift Uppgift 12a Uppgiften går ut på att göra en enkel
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Laboration 1: Figurer i hierarki
Laboration 1: Figurer i hierarki Bakgrund Två grundläggande tekniker i objektorienterad konstruktion är arv och komposition. Mål Laborationen har flera avsikter: 1. Ge kunskaper i hur program kan organiseras
Övning 4. Arv och andra relationer
Högskolan Dalarna Objektorienterad Analys & Konstruktion, 10p 1 Övning 4. Arv och andra relationer Stegvis förfining som programutvecklingsmetodik Det är mycket viktigt att du jobbar stegvis när du utvecklar
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programvara och system Tommy Olsson 2014-02-05 Lektionsplanering.................................. 2 Lektion 1..........................................
KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09
Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag.
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2010-04-07 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
Objektorientering i liten skala
Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2012-10-24 Objektorientering i liten skala Mål I denna lab skall du skriva ett objektorienterat program. Programmet skall delas
Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
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
Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)
Objektorienterad programmering Föreläsning 15 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Grafiska användargränssnitt (GUI Graphical User Interface) Standardklassen (Control)
TDP005 Projekt: Objektorienterat system
. TDP005 Projekt: Objektorienterat system Designspecifikation Författare, dylma900@student.liu.se, albve061@student.liu.se Höstterminen 2016 Version 0.2 2016-12-16 1 Revisionshistorik Ver. Revisionsbeskrivning
TDDI14 Objektorienterad programmering
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system Tommy Olsson 2015-05-27 Datortentamen i TDDI14 Objektorienterad programmering Provkod DAT1 Datum 2015-06-01
Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?
Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2015 2014 jonas.kvarnstrom@liu.se
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
Datorövning 1. int sgd(int m, int n) { int rest; while ( n!= 0 ) { rest = m % n; m = n; n = rest; return m;
Datorövning 1 A) Kör igång MicrosoftVisualC++-miljön. Välj File New Project från huvudmenyn och skapa ett nytt Win32 Console Project med namnet Mittnamn. Skapa en ny katalog, Oop, genom att vid Location
Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016
Objektorienterad Programkonstruktion Föreläsning 9 30 nov 2016 Collections Ett samlingsnamn på objekt som innehåller en samling av andra objekt Det finns många olika sorters Collections, t.ex listor, träd,
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
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
Detaljbeskrivning av Player
Detaljbeskrivning av Player Syftet med Playerklassen är att representera det skepp som spelaren styr. Spelarens skepp styrs till skillnad från övriga skepp av spelaren både när det kommer till vilken riktning
TUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
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
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
Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets
GUI (forts) Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets Sven-Olof Nyström Uppsala Universitet 18 mars 2005 Skansholm: Kapitel 6 Användaren kan kommunicera med programmet
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om
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
Windows Forms Winstrand Development
2013-01-23 1 Winstrand Development Användargränssnitt Hittills har vi skapat program för kommandoraden. Den bakomliggande koden fungerar som den ska, men vi upptäcker snabbt att programmen är begränsade
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
TDIU01 Programmering i C++
TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista
Lab5 för prgmedcl04 Grafik
Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna
Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
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
Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006
Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Detta lösningsförslag är skrivet i stor hast, så det är möjligt att det innehåller en del slarvfel jag ber i så fall om ursäkt för
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
Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har
Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och
Tentamen i Objektorienterad modellering och design
Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram
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:
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
2D1387, Programsystemkonstruktion med C++ 01/02 1
2D1387, Programsystemkonstruktion med C++ 01/02 1 Slide 1 Del4 Klassmallar, funktionsmallar och STL Ämnesområden denna föreläsning: Funktionsmallar (function templates) Klassmallar Mallar för medlemmar
Objektorienterad Programkonstruktion
Objektorienterad Programkonstruktion Föreläsning 9 Projektuppgift Collection, Iterator, Composite Christian Smith ccs@kth.se 1 Projektuppgift IM, skickar meddelanden mellan datorer En lite större labbuppgift,
Malmö högskola 2007/2008 Teknik och samhälle
Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa
Klasser. Kapitel 2. Kapitel 2 - Klasser, medlemmar och arv. Klasser. Klasser Medlemmar Arv
Kapitel 2 Klasser Medlemmar Arv, medlemmar och arv Klasser, åtkomst Medlemmar, medlemsfunktioner, inline och destruktorer this-pekaren Arv, åtkomst Multipelt arv, virtuell basklass Konstanta funktioner
Lösningsförslag till tentamen TDP004 Objektorienterad Programmering Teoretisk del
Lösningsförslag till tentamen TDP004 Objektorienterad Programmering 2008-03-26 Teoretisk del 1a). Vad är det som skiljer en virtuell funktion och en rent virtuell funktion? Du kan förutsätta att det är
Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018
Static vs Dynamic binding Override vs Overload Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018 Quiz: Gissa typen? Object o = new Square(100,100); Polygon p =
Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.
Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv
Laboration A Objektsamlingar
Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se
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
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
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
Standard Template Library STL. Behållarklasser
Standard Template Library STL Kärnan av STL utgörs av behållarklasser (containers, datasamlingar, collections...) och algoritmer för operationer på sekvenser av element. Utvecklad av Alexander Stepanov
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
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
HI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2015-01-08 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering
TDIU20 (exempel) TDIU20 Tentaregler
Inloggning TDIU20 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
Ö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
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen
Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för
Skapa, kopiera och destruera klassobjekt
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för Programvara och system Tommy Olsson 2013-08-12 Skapa, kopiera och destruera klassobjekt Detta dokument tar upp viktiga, grundläggande
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
Föreläsning 3: Händelsestyrda program och användargränssnitt
(2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september
Tentamen i Introduktion till programmering
Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:
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,
TDDI22 (exempel) TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
Föreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Objektorienterad programmering i Java I
Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda
DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.
Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 8 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Objektorienterad programutveckling Algoritmer Algoritmkonstruktionerna Relationer
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
1 Klasser och objektorientering Vad är objektorientering?
1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det