Introduktion til programmering. UML, Uge 45 Computer science, kap 7, særl. 7.4 og 7.5. Martin Fowler: UML distilled, kap. 3. Addision-Wesley, 2004.



Relaterede dokumenter
Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Klasser og Objekter i Python. Uge 11

Lær Python - Dag 4, modul 2 Objektorienteret programmering

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

2. Husk at give execute-tilladelser. I Filezilla højreklikker I på den overførte file, så vælger I fileattributes og sætter kryds i execute.

Lær Python - Dag 4, modul 1 Objektorienteret programmering

Analyse, problemområde, anvendelsesområde

UML til kravspecificering

Programmeringscamp Opbygning og specialisering af klassehierarki. Simulering af en kasselinje

Lær Python dag 1 - modul 1

Lær Python - Dag 3, modul 1 Læse og skrive filer

Børn, unge og sundhed Automatisering

Tilbudsportalen REST testklient

Introduktion til programmering

Introduktion til ActionScript, fortsat

It og informationssøgning Forelæsning 5 4. oktober 2006 Nils Andersen. Tilfældige tal. Statistisk test. Sæt og associationslister.

Python 3 Matematik Programmerings kursus:

Generisk programmering - opgave 2 - Doxygen

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Hassansalem.dk/delpin User: admin Pass: admin BACKEND

Software Design (SWD) Spørgsmål 1

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

Hvem er vi? Kursus Introduktion. Kursuslærerne. Agenda for i dag

Assignment #5 Toolbox Contract

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Vejledning til KL s Excelværktøj

Programmeringscamp. Implementer funktionerne én for én og test hele tiden.

SDB. MySQL Installation Guide

Side 1. Databaser og SQL. Dagens gang. Databasebegreber. Introduktion til SQL Kap 1-5

Projekt database. 3 Semester - Mul a Projekt 1. Yaser Osman cph-mo102@cphbusiness.dk. Dan Eskildsen cph-de32@cphbusiness.dk

Uge 36 Intro Kap 0 og 2 i Computer science

Feriepengeforpligtigelse Manuel beregning på ferietotaler (Rapport-ID: 57)

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Reeksamen, DSDS, forår 2008

Software Dokumentation

Specialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6

Dokumentation af programmering i Python 2.75

UML-Light (Note: UML-Light T133, ver. 2004) Finn Overgaard Hansen, IHA

Database for udviklere. Jan Lund Madsen PBS10107

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

Aftenskole i programmering sæson Core Data del 2. Sæson 2-13

DESIGN. Blog: Portfolioer: CPH-mails:

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

Software Construction 1 semester (SWC) Spørgsmål 1

Object-Relational Mapping

APV og trivsel APV og trivsel

A Profile for Safety Critical Java

Software Design (SWD) Spørgsmål 1

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Introduktion til programmering

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

Introduktion til programmering. Uge 38.1 Python 2 Learning Python, kap 8-12.

Programmering C RTG

Miniprojekt 3: Fejlkorligerende køder Fejlkorrigerende koder

ER-modellen. Databaser, efterår Troels Andreasen. Efterår 2002

Ledelsestilsyn/Anvisning

Undersøgelse af den Relationelle koordinering i projektet En god start-sammen i Hjørring kommune og Sygehus Vendsyssel

BILAG A SPØRGESKEMA. I denne At-vejledning præsenteres et kort spørgeskema med i alt 44 spørgsmål fordelt på otte skalaer.

Videregående programmering i Java

Polynomier et introforløb til TII

Variabel- sammenhænge

Spørgsmål og svar om håndtering af udenlandsk udbytteskat marts 2016

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Undervisningsbeskrivelse

Introduktion til programmering. Programmeringssprog Uge 44 Computer Science, kap 6. Learning Python: kap 13, 14.

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Netværk & elektronik

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning

SWC eksamens-spørgsmål. Oversigt

Aarhus Universitet, Science and Technology, Computer Science. Mock Exam. Wednesday 27 June 2018, 9:00-11:00

Objekt-orienteret programmering uden klasser: Self.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

DM507 Algoritmer og datastrukturer

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

4 Basal Objekt-orienteret Programmering I.

Brug af løbenummer 098 og 099 i HR-Løn. Funktionsvederlag i HR-Løn

Noter til dm529. Jonas Nyrup. 11. november 2011

Eksempel: et ordresystem note 5 Lagdeling s. 1

Finde invers funktion til en 2-gradsfunktion - ved parallelforskydning. John V Petersen

5. Persondataloven 5.1. Indsamling, behandling, behandlingssikkerhed, videregivelse og oplysningspligt Indsamling Behandling

UDKAST til Værdighedspolitik. (Orange silhuetter kommer)

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse

Programmering og Problemløsning, 2017

Python programmering. Per Tøfting. MacFest

Klasser og objekter. (Afsnit i manualen)

Introduktion til OO* og UML

2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.

Eksamen, DSDS, forår 2009

Statistikkompendium. Statistik

Version Dato Beskrivelse /11/2012 Initial version /03/2013 Tilføjet eksempel med Template Agent, generelt udvidet dokumentet.

Eksamen, DSDS, efterår 2008

Videregående Programmering for Diplom-E Noter

Klare tal om effektiviteten i vandsektoren Partner Martin H. Thelle 22. januar 2014

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Transkript:

Introduktion til programmering UML, Uge 45 Computer science, kap 7, særl. 7.4 og 7.5. Martin Fowler: UML distilled, kap. 3. Addision-Wesley, 2004.

Diagrammer Diagrammer er visuelle fremstillinger af beskrivelser der består af en lang række simple ens sætninger Diagrammer er abstraktioner. De udelader en mængde detaljer Diagrammer er redskaber til at reducere kompleksitet.

Hvornår diagrammer? Diagrammer er nødvendige når tingene bliver komplicerede Kør Beggars and Philanthropists

Entity-relation De simple sætninger: Entitet har Egenskab Entitet A står-i-relation-til Entitet B Relation Egenskab Entitet

ER-diagram Et kæledyr har et navn Et kæledyr har en fødselsdag Et kæledyr er ejet af en person Navn Navn ErEn 1 Art Kæledyr M M Species Fødselsdag Dødsdag Ejet af 1 Person Navn

Kald-struktur Structure chart De simple sætninger Funktion A kalder funktion B A B

HTML-tabellen def makehtmlpage(tablecontents): return makestart() + maketable(tablecontents) + makeending() def maketable(tablecontents):. htmltabel += makerow(row) return htmltabel def makerow(rowcontents):. htmlrow += makecell(cell). return htmlrow

HTML-tabellen makehtmlpage(tablecontents): makestart() maketable(tablecontents) makeending() makerow(rowcontents): makecell(cell)

Brugsscenarier Use case diagrams Defineret ved formål Aktør interagerer med Systemmodul Formål her: brugerne og udvikleren retter simuleringen så den passer med brugernes teori

Dataflow De simple sætninger Kilde producerer data En klient producerer en forespørgsel Data forsvinder i afløb En klient konsumerer en html-side Proces A omdanner data fra proces B og leverer resultatet til proces C En forespørgsel omdannes til en sqlkommando Process A henter data fra lager En sql-forespørgsel henter et svar fra en sqldatabase Process A gemmer data på lager En sql-kommando indsætter en række i en tabel Source/ sink Process

Eksempel Python program Client cgi.fieldstorage Construct sqlcommand SQL-server Sql-command Handle sqlcommand Sql-command Layout information Tuple of tuples Database Make webpage Html code Client

UML klassediagrammer De simple sætninger Klasse A er en underklasse/overklasse af klasse B En liste er en underklasse af klassen sekvens Et universitet er en underklasse af klassen organisation Klasse A er en del af/har delen klasse B En liste indeholder objekter som dele Et fakultet er en del af et universitet Klasse A står i relation til klasse B Et institut udbyder uddannelser Klasse A afhænger af klasse B En Python webcrawler er afhængig af httplib Klasse A har attributten B En sekvens har egenskaben længde En ansat har egenskaben lønramme Klasse A kan udføre metoden B En liste kan udføre metoden append Et fakultet kan ansætte og fyre ansatte

Generalisering/specialisering Klasse A er en underklasse/overklasse af klasse B Underklassen arver alle overklassens egenskaber og metoder >>> len('xxx') 3 >>> len([1,2,3]) 3 >>> len((1,2,3)) 3 >>> 'xxx'.isalpha() True >>> (1,2,3).isalpha() Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> (1,2,3).isalpha() AttributeError: 'tuple' object has no attribute 'isalpha' >>> String +isalpha() +isdigit() Sequence -length +slicing() +() Tuple List +append() +extend()

Aggregering/dekomponering Klasse A er en del af/har delen klasse B

Organisationer: Århus Universitet

Metoder og attributter De simple sætninger Klasse A kan udføre metoden B Klassen A har attributten B class Ledelse: def init (self, medlemmer, organisation): self.medlemmer = medlemmer self.organisation = organisation def udnaevn(self, medlem): self.medlemmer.append(medlem) def fjern(self, medlem): self.medlemmer.remove(medlem)

Klasser Underklassens navn Overklassens navn Instans af underklassen Underklassens init Overklassens init class Organisation(Entitet): def init (self, navn,addresse, ledelse): Entitet. init (self,navn, addresse) self.ledelse = ledelse En instans af klassen dannes ved at skrive klassens navn efterfulgt af init s parametre, undtagen self. Man kalder i virkeligheden init (en constructor ) enorganisation = Organisation( Årh Univ, Ringgaden,enLedelse) Self betyder: mig, denne instans. Man refererer til instansens egenskaber ved at skrive self.egenskab, altså min egenskab. Hvis klassen er en underklasse af en overordnet klasse, skal underklassens init kalde overklassens init

Delvis implementering class Entitet: def init (self, navn,addresse): self.navn = navn self.addresse = addresse def verbalize(self): print vars(self) class Organisation(Entitet): def init (self, navn,addresse, ledelse): Entitet. init (self,navn, addresse) self.ledelse = ledelse class Uddannelse(Organisation): def init (self, navn,addresse, ledelse, tilknytning): Organisation. init (self, navn,addresse, ledelse) self.tilknytning=tilknytning class Universitet(Organisation): def init (self, navn,addresse, ledelse, fakulteter): Organisation. init (self, navn,addresse, ledelse) self.fakulteter = fakulteter class Fakultet(Organisation): def init (self, navn,addresse, ledelse, fagområde,institutter,uddannelser): Organisation. init (self, navn,addresse, ledelse) self.fagområde = fagområde self.institutter = institutter self.uddannelser = uddannelser class Institut(Organisation): def init (self, navn,addresse, ledelse,fagområde): Organisation. init (self, navn,addresse, ledelse) self.fagområde = fagområde class Ledelse: def init (self, medlemmer, organisation): self.medlemmer = medlemmer self.organisation = organisation def udnaevn(self, medlem): self.medlemmer.append(medlem) def fjern(self, medlem): self.medlemmer.remove(medlem) class Ansat(Entitet): def init (self, navn,addresse, lønramme,cpr,bankkonto): Entitet. init (self,navn, addresse) self.lønramme = lønramme self.cpr = cpr self.bankkonto = bankkonto if name == ' main ': imv = Institut('imv','IT-byen',[],'IT') humfak = Fakultet('hum fak','nobelparken',[],'humaniora',[imv],[]) imv.verbalize() humfak.verbalize()

Implementering Aggregering: en liste af komponenterne Associationer: en list af de associerede objekter Specialisering: subklasser Attributter: variable knyttet til klassen Metoder: funktioner knyttet til klassen

Opgave Skriv Python-kode der implementerer ovenstående UML-diagram. Generer instanser af jeres klasser. Check at de er rigtige ved hjælp af kommandoen vars(instans). Den udskriver instansens dictionary. Metoderne behøver I ikke at implementere fuldt. I kan nøjes med at de printer deres eget navn: def sendbesked(self,besked): print 'besked sendes' Husk: En instans af klassen dannes ved at skrive klassens navn efterfulgt af init s parametre, undtagen self. Altså: enorganisation = Organisation( Årh Univ, Ringgaden,enLedelse) Man kalder i virkeligheden init (en såkaldt constructor ) Self betyder: mig, denne instans. Man refererer til instansens egenskaber ved at skrive self.egenskab, altså min egenskab. Hvis klassen er en underklasse af en overordnet klasse, skal underklassens init kalde overklassens init

Patterns: reduktion af kompleksitet Standardløsninger på hyppige problemer State pattern Løser problemet at en instans ikke kan skifte klasse Når man bliver lektor skal man oprette en helt ny ansat

Associationer Klasse A står i relation til klasse B Multiplicitet Kan være en vigtig afgørelse Kan samme uddannelse ligger under to fakulteter? Tværfaglighed: Ja Studieordninger: Nej Økonomi: Nej

Afhængigheder: Det lille system på hjemmesiden EnkeltWebSide DynamicWebPages sql database htmlroutines MySQLdb cgi

Kobling Coupling Afhængigheder mellem moduler Kan man rette i eet modul uden at skulle rette i andre moduler? Skal være lav.

Sammenhæng Cohesion Sammenhæng indenfor det enkelte modul Logical cohesion: en klasse repræsenterer en sammenhængende verden. Functional cohesion: en klasses metoder kalder hinanden. Skal være høj.