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 C++ http://www.cs.umu.se/kurser/tdbb09/ht03/ 1 2 Kursupplägg Moment 1 (3poäng) Teoridel Examineras genom skriftlig tentamen i slutet av kursen Moment 2 (2 poäng) Examineras genom ett antal (3 st) obligatoriska inlämningsuppgifter (labbar) som skall utföras enskilt C++ intro och design av Robot Garden Robot Garden Templates och algoritmbiblioteket Tillgodoräknande Kursen kan ej tillgodoräknas i examen samtidigt som Objektorienterad programmering med c++ (TDBA43) Inte heller fult ut tillsammans med annan grundläggande kurs i objektorientering som tex: Programmering i Java (TDBA54) Programmeringsmetodik och programmering i ett objektorienterat språk (TDBA63) 3 4 Kursbok C++ How to program. Fourth Edition. Deitel & Deitel. Prentice Hall, New Jersey, 2003. ISBN 0-13-111881-1 Även tidigare utgåvor går bra att använda och har ni någon annan något så när fullständig c++-bok så funkar det nog också Labsalar Ingen särskild sal bokad för er Salar som finns tillgängliga (inte är bokade av någon annan) PC MA316 och MA326 Unix MA416, MA426, MA436 och MA446 5 6 1
Programvara Allt inlämnat ska gå att kompilera med gcc (eg. g++) Andra miljöer som går att använda sig av är tex Visual C++ som följer med boken (den verkar dock följa c++ standarden rätt dåligt). Syftet Labregler motivera studenterna att göra obligatoriska inlämningsuppgifter under kursens gång och att undvika problem med att arbete från tidigare kurser stör de kurser som är placerade senare i tiden. 1. IU kan lämnas in vid två tillfällen: före ordinarie sista inlämningsdag eller vid uppsamlingstillfällets sista inlämningsdag. 7 8 Labregler 2 2. Kursansvarig fastslår sista inlämningsdag för varje IU. Efter rättning av IU ges ett betyg. Om IU får betyget Ofullständig kan studenten korrigera lösningen och lämna in IU en gång till vid den s.k. kompletteringsdagen. Handledaren fastslår kompletteringsdagen som sätts individuellt för varje IU. De IU som bedöms efter kompletteringsdagen ges betyget Godkänd eller Underkänd. Normalt gäller bara en kompletteringsomgång men handledare/kursansvarig kan besluta om ytterligare kompletteringsomgångar från fall till fall. 9 Labregler 3 4. Förändringar av IU-specifikationer bör undvikas under kursens gång. Om förändring av IU-spec sker under kursens gång ska en student kunna bli bedömd utifrån specifikationen före förändringen om studenten lämnat in sin lösning före sista inlämningsdag. 10 IU bedöms med betygen: G: för godkänd O: för ofullständig. Ges för IU som nästan är godkända och ej kräver omfattande arbete för att bli godkända. Ges med ett sista datum för inlämning av en förbättrad version. Om tiden överskrids ges betyget U. U: för underkänd. Ges för uppgift som Lämnas in i tid men ej uppfyller kraven för betyget O. Uppgift som bedömts ofullständig och ej lämnas in i förbättrad version före kompletteringsdag Uppgifter som ej lämnats in i tid K: för "kom in och prata" eller "kommentarer", vilket normalt betyder att endast en diskussion behövs för att IU skall ges betyget G. 11 Labregler 5 6. Studenten ska normalt inte behöva vänta mer än 10 arbetsdagar efter sista inlämningsdag för att få tillbaka IU rättad. 7. Det ska vara minst 5 arbetsdagar mellan IUutlämningstillfället av rättad IU till kompletteringsdagen då den korrigerade O- bedömda IU kan lämnas in för rättning. Med IUutlämningstillfälle menas den tidpunkt då studenten har givits tillfälle att hämta IU från handledare. 12 2
Introduktion till OOA, OOD, OOP Dagens problem Varför blir det förseningar Varför uppfylls inte kraven OO en struktureringsteknik Beskriver objekt istället för funktioner Arv Skillnad mot traditionell utveckling Dagens problem Förseningar 90% av projekten tar 50% längre tid Höga kostnader 5000 kr/kodrad Systemen uppfyller inte kraven Programstrukturen blir dålig Återanvändningen är liten 13 14 Varför blir det förseningar? Komplexa system Ingen överblick Ingen riktig förståelse Big-bang principen Varför uppfylls inte kraven? Var fel från början Inkompletta Har ändrats 15 16 Systemutveckling Brister, missförstånd ger Fel system Fel tidpunkt Fel kostnad Objekt-orientering i tre steg OOA: Analys av verkligheten OOD: Design av implementationen OOP: implementation med hjälp av OOprogramspråk 17 18 3
Inkrementell systemutveckling Steg Big-bang, vattenfall Analys Design Implementation 3 Analys Design Impl Eval 2 Analys Design Impl Eval 1 Analys Design Impl Eval 19 Tid Dokument - Beskriver Projektplan Kravspec Analys Design Detaljdesign Källkod Testprotokoll Användarmanual Hur arbetet ska utföras, tidplan, vad som ska produceras Slutanvändarnas behov OO modell över verkliga behov Systemarkitektur, relationer, beteenden Beskriver varje klass manual för klasserna Hur systemet ska testas 20 Målen med objektorientering Modellering - nära verkligheten; lättförstått Modularisering - kring verkliga begrepp; stabilt Förändring - enkel lokalisering Utbyggnad - nya klasser, operationer eller arv Återanvändbarhet med hjälp av arv Produktivitet - klassbibliotek Terminologi - samma i alla faser; spårbarhet Mål forts Att skapa en OO-modell som underlag Skapa en öppen arkitektur infrastruktur Maximera inkapsling och modularitet Minimera beroenden Studera objektens samarbete 21 22 OO- En struktureringsteknik Ger modulära, förändringsbara system Stödjer hela livscykeln: Analys, Design, implementation och Underhåll För alla användare Ersätter inte hårt arbete, IQ eller omdöme Beskriver objekt istället för funktioner Vad istället för Hur Utnyttjar likheter och relationer Mer stabila vid förändringar 23 24 4
Arv Definiera vad som skiljer Underlättar återanvändning En lastbil är en slags bil som är ett Fordon Fordon Generalisering Cykel Bil Lastbil Specialisering 25 Skillnad mot traditionell utveckling Traditionellt: Data Funktioner Objektorienterat: Kund Konto Kassa Funktioner som agerar på data Många funktioner som behöver ändras om dataformatet ändras Små minisystem i systemet Representationen är hemlig 26 OO design Finna objekt och klasser Definiera relationer Beskriv sambanden för önskad funktionalitet Undvik att tänka på implemenationen Traditionellt Dela upp i delfunktioner Läs in Beräkna Finn Designstruktur Skriv ut Skapa Objektorienterat Fokus kring vad Simulering av verkligheten Rapport Dagskassa Kassa Hämta belopp 27 Tolka Avgör Transaktion 28 Designmål C++ Kompatibelt med C Portabelt mellan miljöer Bättre C Stöd för OO Dataabstraktion (Klasser) Arv Dynamisk bindning Effektiva program Hårdare typkontroll Referenstyp Egendef typer, klasser Streams Arv Dynamisk bindning Typparametrisering Undantagshantering Egenskaper fisäkrare program fiblir mer lättläst fibygger ut språket fisäkrare I/O fibeskriver skillnader fiunderlättar utbyggnad figenerella mallar fibra felhantering 29 30 5
Andra objekt-orienterade språk Simula Eiffel Objective C Smalltalk Ada Java Bakgrund, C++ Skapades av Bjarne Stroustrup ca 1982 Snabbast växande i programhistorien Språket utvecklas fortfarande Snart ny standard (3.0, X3J16) Diskussionsgrupper comp.lang.c++, comp.std.c++ ftp://ftp.std.com/aw/stroustrup2e/ 31 32 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å 33 34 Den objekt-orienterade modellen Beskriver vad som agerar (objekten) Gemensamt språk för alla Intressenter Nivåer Tidpunkter Hög nivå utan detaljer Jämför med icke-oo Procedurella språk/metoder Beskriver hur något utförs Data ligger ofta centralt och alla rutiner kan komma åt det Programflödet är det viktiga 35 36 6
Vad är ett objekt? Relationer VAD hanterar vårt system Har tillstånd minne Operationer Identitet mitt_konto Klass-Objekt Användning Association Aggregat Arv Saldo insättning() 500 37 38 7