Klasser och objekt? Objekt och klasser. Analys och design. Objekt. Klass. Programmering?

Relevanta dokument
Problemlösning. Analys och design OOA&D. Programutveckling sker i faser OOA&D. Fastställa och analysera förutsättningarna/ kraven.

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Individuellt Mjukvaruutvecklingsprojekt

Klass och metoddesign. Skapa en OO-design. Kodkonvention. Hur kan man jobba med kodkvalité? Implementation. Bra klasser är grunden

Syftet med en personlig handlingsplan

Skriva B gammalt nationellt prov

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Svenska som andraspråk, år 8

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

Förskollärarprogrammet

Idag: Dataabstraktion

Objektorienterad programmering

Processinriktning. Anvisning. Diarienummer: KS 2015/2121 Dokumentansvarig: Utveckling, planering och uppföljning, Utvecklingsledare

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Programmering för språkteknologer II, HT2014. Rum

Lathund till Annonsportalen

Klasser och objekt i C#

BRUK. bedömning reflektion utveckling kvalitet

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Objektorientering Klasser

Elevinflytande i planeringen av undervisningen. BFL-piloter Mats Burström

Omfattning: heldagar samt tre coachtillfällen med personlig coaching. För mer information och frågor kontakta oss på info@shifteducation.

729G06 Föreläsning 1 Objektorienterad programmering

Varierad undervisning för lust a1 lära

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Välkommen till Arbetsförmedlingen! Information till dig som är arbetssökande

Objektorientering. Grunderna i OO

Minoritetsspråk Åk 9

F5 Kodkvalitet. Programutveckling sker i faser. Livscykel, vidareutveckling och återanvändning

PRÖVNINGSANVISNINGAR

Vetenskapliga begrepp. Studieobjekt, metod, resultat, bidrag

Upplägg och genomförande - kurs D

Lathund, procent med bråk, åk 8

Fråga 2 (3p): Läs påstående och anledning och välj det alternativ som passar bäst.

En Single-Page Application för små barn, barnens föräldrar samt en och annan mormor

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Kvalitetsrapport Så här går det

UPPGIFT: SKRIV EN DEBATTARTIKEL

Utvärdering APL frågor till praktikant

Läroplanen i Gy Ett arbete för att öka förståelsen av det som står i läroplanen och hur det ska tolkas i klassrumsarbetet

Tränarguide del 1. Mattelek.

Programexempel: tärningsspel

Specialpedagogisk kompetensutveckling för all pedagogisk personal inom Barn- och Utbildningsförvaltningen i Östersunds kommun.

Föreläsning 10. ADT:er och datastrukturer

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

Statens skolverks författningssamling

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Matris för Hem och Konsumentkunskap åk.6 8 Nivå 1 Nivå 2 Nivå 3 Nivå 4

Visualisering av golfboende

Lathund för pedagoger Grundskola med:

Objektorientering Användning

4-6 Trianglar Namn:..

Sundbybergs stad Skolundersökning 2015 Föräldrar förskola Fristående förskolor totalt Antal svar samtliga fristående förskolor: 360 (57 %)

DATORISERAD MÖNSTERHANTERING

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Ledarskap , Såstaholm

Motiverande Samtal MI introduktion

Skolförvaltningen Verksamhetsområde Södra. Elevhälsoplan. Verksamhetsområde Södra. F-klass åk 3. Fritidshem. Solenskolan.

LATIN SPRÅK OCH KULTUR

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Studiehandledning. Reflektionsfrågor till del I

Kiwiböckerna metod och begrepp

Disclosure. SOMP-I skapades av Kristina Persson. SOMP-I ägs av Barnens rörelsebyrå Kristina Persson & Kine Johansen är delägare i företaget

ÄT RÄTT NÄR DU TRÄNAR

Sundbybergs stad Skolundersökning 2015 Föräldrar förskola Stella Nova förskola

Svenska som andraspråk, 1000 verksamhetspoäng

Läraren som moderator vid problemlösning i matematik

Varför är det så viktigt hur vi bedömer?! Christian Lundahl!

Systematiskt kvalitetsarbete

Uppdrag: Huset. Fundera på: Vilka delar i ditt hus samverkar för att elen ska fungera?

Sätt att skriva ut binärträd

Hur motiverad är patienten?

Distribuerade Informationssystem VT-04

Planera och framföra ett högtidstal

En grafisk guide till vår identitet

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

Mål Blå kurs Röd kurs

Arbetsplan. Lillbergets förskola Avd /2016. Barn och utbildning

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Timeline dropbox för lärare och elever

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Anna Kinberg Batra Inledningsanförande 15 oktober 2015

GHI-12:123 Rev B Cockpit Communicator. Release 7.3 Enklare och tydligare

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll

Identiteter och behörigheter i molnet och BYOD

Webb-bidrag. Sök bidrag på webben Gäller från

Introduktion till programmering D0009E. Välkomna!

Syfte med

Gissa det hemliga talet

Transkript:

Objekt och klasser Analys och design med hjälp av CRC Objekt Modeller av saker i problemdomänen ( den röda bilen i parkeringshuset Nanna ) Klasser Representerar alla objekt av ett visst slag ( bil ) 45 46 Klasser och objekt? Vad är en klass? Vad är ett objekt? Vad är skillnaden mellan klass och objekt? Objekt Ett objekt är en individuellt identifierbar entitet som kan vara konkret eller abstrakt. Ett objekt har tillstånd, beteende och identitet. Reellt, gripbart, synligt ting (t ex en specifik person) Abstrakt ting (t ex en tid eller en anställd) Varje objekt har ett tillstånd, ett beteende och en identitet. Tillståndet beskriver objektets egenskaper (t ex adress och ålder hos en person) Beteendet beskriver vad objektet kan göra (t ex flytta). OBS! Detta kan innebära att tillståndet ändras Identiteten skiljer ett objekt från alla andra objekt 47 48 Klass En klass är en byggplan för objekt av samma sort. Alla objekt av en klass (instanser) har samma sorts egenskaper och beteenden En klass beskriver en mängd liknande objekt Datatyp namn ålder adress flytta... Person Namn på klassen egenskaper (attribut) beteende (metoder) 49 Programmering? Ni har läst grundläggande programmeringsmetodik C, Python, etc Ni har läst Datastrukturer och algoritmer Använd C eller Python för att bygga listor, träd, tabeller, etc. Hur väl stödjer C de saker som DoA:n lyfter fram Inkapsling, återanvändning, mm 50

Programmering? Är ni taggade på att ta nästa steg, för att klara av att bygga större mer komplexa system? Vi behöver utöka verktygslådan Designtänk och metodik Bättre stöd för DoA i språket Börja tänka test och använda verktyg för att testa Verktyg för att stödja samarbete Angripa vaga problemställningar Problemlösning Alla större projekt misslyckas, eftersom det är omöjligt för utvecklarna att till fullo förstå uppgiften som ska lösas och vilka alla problem som är inneboende i uppgiften. Antaganden måste klargöras Möjliga feltolkningar måste undanröjas När problem/uppgifterna blir större, måste lösningen delas in i hanterliga delar Denna teknik är fundamental för programvaruutveckling I objektorienterad utveckling delas lösningen in i objekt och klasser 51 52 Programutveckling sker i faser Här: starkt förenklat version Passar bara mindre projekt Fem delmoment: Fastställa och analysera förutsättningarna/kraven Skapa en design Implementera koden Testning Dokumentation OBS! Testning och dokumentation ska ske parallellt med de övriga momenten. 53 OOA&D Design Kräver förståelse för uppgiften/problemet Analys Kräver språk för att uttrycka designen i Kräver ett strukturerat arbetssätt Bygger på erfarenhet Syftar till att få fram en OO modell som går att implementera Design och analys hör ihop 54 OOA&D Modeller underlättar kommunikation Oberoende av programspråk Abstraherar från oväsentliga detaljer Underlättar testning i tidigt skede Några bra verktyg CRC-kort UML (ett modelleringsspråk) Designmönster (Fabrik,...) Interaktionen/flödet Scenarios Swim-lanes Skisser Mock-up:er 56

Fastställa och analysera förutsättningarna/ kraven Vad ska göras? Vilka begränsningar finns? Är alla oklarheter utredda? Gör modeller/utkast Undvik att tänka på implementationen 57 Skapa en OO-design Bestäm klasser, objekt och metoder som behövs Vad finns redan? Bestäm algoritmer för problemlösningen I princip oberoende av programmeringsspråk Diagram Pseudokod Designa för återanvändning? Det är svårare att göra generella lösningar Kan löna sig i framtiden Återanvändning har varit en stor anledning till OOboomen 58 Implementation När man kommer till detta steg så har man ritning klar, det mesta av materialvalen är gjorda Översättning av design till källkod Implementationen fokuserar på kod-detaljer Alla viktiga beslut tas vid analys och design Testning och dokumentation Tester måste konstrueras för extremer, svagheter och gränsfall Med tester ska fel hittas och inte undvikas Testa tidigt och ofta Det är inte bara kod som kan testas Dokumentera fortlöpande 59 60 ANALYS SYSTEM DESIGN PROGRAM DESIGN V modellen Validera kraven Verifiera designen SYSTEMTEST ENHETS- & INTE- GRATIONSTEST DRIFT & UNDERHÅLL ACCEPTANS- TEST Vad kännetecknar en god klass En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat sätt Har ett koncist och sammanhängande gränssnitt KODNING 61 62

Vad kännetecknar en god klass Har tillstånd och beteende Representerar en mängd möjliga run-time objekt Problemet ska delas upp i lämpliga klasser Cohesion och Coupling (sammanhörighet och koppling) Metoderna i varje klass ska ha stark sammanhörighet Klasserna ska vara löst kopplade (oberoende av varandra) 63 Cohesion Varje metod ska vara ansvarig för bara en uppgift Cohesion mäter huruvida en metod uppfyller detta krav Ju mer en metod fokuserar på en enda uppgift, desto enklare är det att finna ett bra namn enklare och förståeligare blir koden Metoder med stark samhörighet kan lättare ändras utan att andra metoder påverkas Det ska vara möjligt att beskriva en metod med en enkel mening med ett verb och ett objekt 64 Kategorier av metoder Konstruktorer Skapa instanser Selektor (get-metod) Returnerar information om objektets tillstånd Mutator (set-metod) Ändra objektets tillstånd Annat Gör någonting En metod ska tillhöra bara en kategori 65 Exempel 1: Cohesion: Exempel 1 public void setnameandage (String name, int age); Bättre: public void setname (String name); public void setage (int age); Exempel 2: /* Anropas en gång om året */ public void calculateholidays(); { holidays += new Holidays(); age++; Bättre: public void calculateholidays(); public void incrementage(); 66 Exempel 3: Bättre: Cohesion: Exempel 2 public void setfirstname (String name){ firstname = name; public void setlastname (String name){ lastname = name; fullname = firstname + + lastname; public void setfirstname (String name) { firstname = name; fullname = firstname + + lastname; public void setlastname (String name){ lastname = name; fullname = firstname + + lastname; 67 Coupling Klasserna ska vara så oberoende som möjligt av varandra Coupling mäter hur starkt klasserna är kopplade Ju lösare klasserna är kopplade, desto enklare är det att förstå en enstaka klass enklare och förståeligare blir systemet som helhet Klasserna med lös koppling kan lättare ändras utan att andra klasser påverkas Systemet blir lättare att ändra Mera flexibilitet PROBLEM: Arv skapar starka kopplingar 68

Klassdiagram Klassdiagram UML: Klassrelationer Klassdiagram svag koppling stark koppling 71 OOA&D med CRC-kort Analys Förstå problemet/uppgiften Utveckla en OO modell av problemet Design Utveckla en OO modell av lösningen Modeller underlättar kommunikation Oberoende av programspråk Abstraherar från oväsentliga detaljer Underlättar testning i tidigt skede CRC-kort UML(ett modelleringsspråk för OO utveckling) Rollspelsdiagram 73 CRC Metoden Grupparbete(4-6 personer) Hitta kandidatobjekt Brainstorming Substantiv & adjektiv Filtrera kandidatobjekten Skapa CRC-kort för kvarvarande kandidatobjekt Definiera scener för testning av modellen (testfall) Spela in scener m.h.a rollspelsdiagram (testa) Uppdatera CRC-korten och scenerna 74

Brainstorming Fokuserat utforskande i grupp Okritiskt förhållningssätt i genereringsfasen Substantiv & adjektiv i uppdragsbeskrivning Lätt metod Kräver en vettig och inte allt för ordig och lång beskrivning Kräver bra förståelse och analys Filtrering Oavsett metod så måste man göra en bearbetning av kandidaterna Så att god klass-design uppnås Liknande kandidater slås ihop Skippa kandidater som: CRC-kort Class-Responsibilities-Collaborators Klass-ansvar-sammarbetspartner Ett CRC-kort motsvarar en klassbeskrivning Inte går att benämna med ett substantiv eller adjektiv Beskriver imp. detaljer, egenskaper, utan direkt ansvar, modellerar GUI, systemklasser, utanför Informellt verktyg för att ta fram och utvärdera olika ramarna, alternativ 77 78 Scenarier Exempel på hur systemet används Hur gör man för att ta fram scenarier? Brainstorming, Vilka använder systemet, hur använder man systemet, vilka kommer i kontakt med systemet, Så heltäckande det går Kräver en gedigen förståelse och analys av uppgiften Börja med några väldigt enkla 79 RPD - skapa scenarior för att testa designen

RPD spela rollspelet RPD -spela in rollspelet 82 Uppdatera CRC-korten Efter några scenarion & iterationer När CRC-korten är någorlunda stabila kan de göras om till mera formella klassdiagram Design 83 84 Byggritningen (utan GUI)