Objektorienterad Programkonstruktion

2D1947 Objektorienterad Programkonstruktion

Våren 1995

Kursen ges av Institutionen för Numerisk Analys och Datalogi, NADA, och beskriver grunderna för objektorienterad analys, design och programmering. För godkänt på kursen krävs ett antal laborationer och en mindre projektuppgift. Kursen har graderade betyg (3, 4, 5) men ingen tentamen.

Kursen ges endast 1995. Den kommer nästa år att ersättas av 2D1356 som har lite annat innehåll och andra förkunskapskrav.

Senaste nytt (97-08-26)

Följande information kan du hitta nedan

Specifik information för olika linjer

Övrigt


Introduktion och målsättning

Varför objektorientering?

Traditionellt skapar man ett program eller datasystem direkt från en kravspecifikation. Med ett objektorienterat synsätt gör man istället först en modell av verkligheten, en sorts simulerad "minivärld" som speglar allt som händer utanför. Ovanpå denna modell implementerar man all funktionalitet systemet ska ha. Resultatet blir ett system som blir lättare att förstå sig på och som är lättare att ändra och bygga ut.

Varför C++?

Det finns ju så många språk som stödjer objektorienterad programmering? C++ är inte världens lättaste språk, men det är det kanske kraftfullaste inom sin språkfamilj. Dessutom är kunskaper i C++ efterfrågade i industrin. Denna kurs är dock ingen ren programmeringskurs; tyngdpunkten ligger på principer och metoder.

Vad får man då lära sig?

C++-delen av kursen kommer att ta upp programmering på hög nivå med hjälp av färdiga klasser. Vi kommer att visa hur man skriver robusta program. C++ utvecklas fortfarande snabbt och det är vår ambition att ta upp de allra senaste teknikerna. Bl a kommer kursen att introducera begreppen i det framtida standardbiblioteket STL som just nu diskuteras inom standardiseringskommittén.

Analys- och designdelen av kursen tar upp en metod som hjälper programmeraren att identifiera olika typer av objekt, och att definiera deras beteende. Vi kommer att också titta på hur den framtagna objektmodellen kan realiseras i C++. Eventuellt kommer ett CASE-verktyg att användas under kursen.

I kurshandboken finns också en kortfattad kursbeskrivning.

Förkunskapskrav

Motsvarande kursen 2D1985 Datalogi, grundkurs E eller 2D1981 Grundläggande programmeringsteknik.

Antagning och registrering

Kursen är öppen för elever på KTH-linjerna Elektro och Fysik. Elever på F måste söka dispens för att få läsa denna kurs. Studievägledarna på F hjälper till med detta.

Alla elever måste registrera sig på kursen vid kursstart. Det kan du göra genast genom att fylla i ett formulär. Det kommer att finnas datorstöd för detta när kursen börjar.

Föreläsningar

Kursen består av två huvuddelar: objektorienterad modellering samt programmering med C++. Efter en kort introduktion börjar vi direkt med programmeringsdelen, eftersom kursen annars skulle bli väldigt abstrakt. Senare kommer en metod för problemanalys och modellering att beskrivas. Mot slutet av kursen kommer vi att titta på hela kedjan från problemanalys och modellering ända fram till implementation i C++. I kursen ingår också en projektuppgift som omfattar alla dessa steg.

Kursen omfattar 4 poäng, dvs 40*4=160h. Av dessa utgör föreläsningarna 15*2=30h, övningarna 6*2=12h och redovisningar ca 6*0.25+0.5=2h. Resten, dvs 116h, utgörs av laborerande och självstudier.

Kursplan

  1. Introduktion.
  2. Grundläggande C++.
  3. Objektorientering. Övning 1: Grundläggande C++.
    Laboration 1: Abstrakta datatyper (komplexa tal).
  4. Pekare och dynamiskt minne.
  5. Objektkonstruktion med resursallokering. Övning 2: Objektorientering och dynamiskt minne.
    Laboration 2: Objekt som hanterar dynamiskt minne (matris).
  6. Datastrukturer i C++.
  7. Arv. Övning 3: Arv och virtuella funktioner.
    Laboration 3: Containrar och iteratorer (prioritetskö).
  8. Arv, forts. Laboration 4: Arv och virtuella funktioner (grafiska objekt).
  9. Mallklasser (parametriserade klasser).
  10. Mallar forts. Undantagshantering. Övning 4: Mallar.
    Laboration 5: Mallar (typparametriserad prioritetskö).
  11. Objektmodelleringsmetoden OMT (Object Modeling Technique). Övning 5: Objektmodeller i OMT.
    Laboration 6: Objektmodellering (båtuthyrning).
  12. OMT, forts. Projektuppgift (styrprogram för bankomat).
  13. OMT, forts. Övning 6: Dynamiska modeller i OMT.
  14. OMT, design och implementation.
  15. Andra typer av objektorienterade språk.

Laborationer

Kursen består av två delar, LAB1 och LAB2, som omfattar 3 respektive 1 poäng. Delarna godkänns och betygssätts var för sig, men bägge måste vara avklarade innan slutbetyget inrapporteras. Momentet LAB1 omfattar 6 mindre, obligatoriska laborationer, samt en introduktion till UNIX som är frivillig. Momentet LAB2 är en lite större projektuppgift.

Betygssättning

Såväl LAB1 som LAB2 betygssätts med 3, 4 eller 5. Slutbetyget blir ett viktat medelvärde: 2/3 * LAB1-betyg + 1/3 * LAB2-betyg. Medelvärdet avrundas sedan till närmsta heltal.

LAB1

För betyget 3 krävs att alla obligatoriska uppgifter har godkänts. Varje laboration i LAB1 (utom den första UNIX-laborationen) innehåller också en frivillig extrauppgift. För betyg 4 på denna del krävs att minst tre sådana extrauppgifter är godkända. För betyg 5 krävs lösningar på minst fem extrauppgifter.
  1. Abstrakta datatyper.
  2. Objekt som hanterar dynamiskt minne.
  3. Containrar och iteratorer.
  4. Arv och virtuella funktioner.
  5. Mallar.
  6. Objektmodellering.

LAB2

För betyget 3 skall den obligatoriska uppgiften vara löst och godkänd. För betyg 4 på denna del krävs dessutom godkända redovisningar av en av de två frivilliga uppgifterna . För betyg 5 krävs lösningar på bägge extrauppgifterna.

Redovisning av laborationer

Eftersom denna kurs inte har någon tentamen kommer kraven på redovisningarna av laborationer och projektuppgift att vara hårdare än ni kanske är vana vid från andra kurser.

Uppgifterna får lösas och redovisas individuellt eller i grupper om två personer. All examinering sker dock individuellt, dvs eleverna bedöms alltid var för sig. Det kan mycket väl hända att en av eleverna i en grupp blir underkänd på en laboration, medan den andre blir godkänd.

Diskussion av uppgifter och lösningar mellan grupper är tillåten men direkt kopiering av programkod eller OMT-ritningar betraktas som fusk.

Laborationerna ska redovisas för övningsledarna på särskilda tider. Anmälan till redovisning ska ske i förväg på bokningslistor som kommer att anslås under kursens gång. Normalt ges ingen handledning på sådana tider. (Det kommer att finnas separata handledningstider.)

Vid redovisning av laborationer och projektuppgift ska de som redovisar bägge kunna redogöra i detalj för hela lösningen, inklusive datastrukturer, in- och utgångsvillkor hos funktioner, och eventuella OMT-modeller. Inlämnad programkod ska vara välstrukturerad och dokumenterad; det räcker inte med att den fungerar. Kursbunten innehåller vissa grundläggande krav på programstruktur, programkodlayout, och kommentering.

Rapportering av godkända laborationer till betygsdatasystemet ska ske automatiskt. Varje elev måste dock se till att få laborationskvittot påskrivet av assistenten som tar redovisningen. Kvittot skall fyllas i med bläck och ni måste kunna visa legitimation. Vid första redovisningen ska dessutom kvitto på kåravgiften uppvisas, precis som vid en vanlig tentamen.

Kurslitteratur

Kurslitteraturen ska läsas på egen hand parallellt med kursen. Det är inte säkert att föreläsningar och övningar täcker allt som behövs för att klara laborationer och projektuppgift. Det gäller speciellt en del frivilliga uppgifter i laborationerna.

Kursböcker

Bägge böckerna kommer att säljas på Kompendieförmedlingen i Kårhuset.

Kursbunt

Kursbunten är gratis och kommer att delas ut under första föreläsningen. Därefter kommer den att finnas på NADA:s expedition, som har öppet må-fre 9.30-11.15, må-to 12.30-14.15 i läsveckorna.

Föreläsningsanteckningar

Kopior av OH-material kommer att finnas att köpa till självkostnadspris på NADA:s expedition. En prenumeration för hela kursen kostar 40 kr. (Tyvärr kan vi inte administrera köp av enstaka föreläsningars anteckningar.)

Övrigt

För den som är ovan vid UNIX finns det introduktionshäften som tar upp det viktigaste. De häften som beskriver NADA:s UNIX-system finns att köpa på NADA:s expedition. Systemgruppen på E säljer liknande häften som är anpassade för Elektros UNIX-system.

Lärare och assistenter

Kursledning och föreläsningar

Examinator

Övningsledare

Handledare i terminalsalar

Hjälp

Hjälp finns att få (i prioritetsordning):
  1. i kurslitteraturen,
  2. on-line (manualblad, Emacs Info, WWW),
  3. av labgruppskamraten,
  4. av allmän handledare i terminalsalarna,
  5. under schemalagda handledningstider, samt
  6. via datorbrev till din övningsledare.

Synpunkter på kursen

Eftersom en variant av denna kurs (under annat kursnummer) kan komma att ges för många elever under kommande år är vi mycket tacksamma för synpunkter på kursen.

Tryck här för att hämta ett nytt utvärderingsformulär .

En sammanställning av utvärderingsformulär inlämnade före 95-08-09 finns här.

Synpunkter kan också lämnas till direkt kursledare, examinator och övningsledare. Se lärarlistan ovan.


harald@nada.kth.se