Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.

Slides:



Advertisements
Liknande presentationer
BAS-M Hur du på ett enkelt sätt administrerar din båtklubbs register.
Advertisements

Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Kvalitativ analys - Analysprocess
Hur går det till att rapportera in betyg idag?
Word Word är ett av de vanligaste ordbehandlingsprogrammen. Vi skall idag gå igenom de vanligaste funktionerna i programmet. Fördelarna med att använda.
Access med Sebastian och Robert
Display för GymAssistWear - Huvudmeny Välj Av/På Upp i Menyn Ned i Menyn Meny Tillbaka Antal repetitioner Göra Playlist Sparade Playlist Visa statistik.
- Konsten att ge feed-back
Funktioner och programorganisation
Lokal pedagogisk planering
Lust eller lag? Andreas Cederbom
Funktionen SA10-Grupper. Följande typer av grupper finns: - Grupp i kurs hör alltid ihop med en kurskod - Grupp i program hör alltid ihop med en programkod.
Studenter Lär Av Studenter ”SLAS”
ERGONOMI Vad är det?.
Som man frågar får man svar. Vad är intressant? Varför?
Logikprogrammering Ons, 25/9
DCV Idéskiss Design Jag tror att jag ska ha en mörk och stilren design på mitt DCV. Det ska finnas dynamisk funktionalitet där designen byts utan att sidan.
Datamodellering med E/R-diagram
Next previous Refactoring och lite mönster kodade i Java Innehåll Vad är refactoring? Ett större refactoringexempel Några mönster kodade i Java OOMPA 2000.
Filhantering Grundprincipen för filhantering Öppna filen
ObjektOrienterad analys och design. SVP Vt2009. Introduktionsföreläsning måndag 6 april kl Presentation av medverkande lärare Kursinformation (se.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Arv.
Objektorienterad tänkande
Programmeringsteknik K och Media
Tecken som Alternativ och Kompletterande Kommunikation
En PowerPoint om PowerPoint
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Programmering B PHP Lektion 2
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Programmering B PHP Lektion 3
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Metodik för problemlösning Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar.
Vektorer (klassen Vector) Sortering
Positiv Livskraft © Att komma dit du vill
Seminarieboken Kapitel 2 – Att tänka på redan vid starten
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
FL3: Techniques Interaktionsdesign i digitala medier (A.1) HT-2012, 7,5 hp Lärare: Daniel Nylén.
Systematiskt kvalitetsarbete i våra kommuner
Bildfabriken kan ställas in på olika sätt - se några exempel
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Skriva noveller.
MV500B: Introduktion till interaktiv ljuddesign David Yanagisawa, Anders-Petter Andersson 4.5 högskolepoängLektion 3.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Portfolion / Dokumentationen bidrar till utveckling
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Utvecklingsprocessen Webbutveckling. Utvecklingsprocessen Bli inte rädd för alla begrepp och alla verktyg man verkar behöva kunna. Du måste inte använda.
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 10, kapitel 10 Abstrahera mera! Abstrakta klasser och interface Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”,
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Välkommen till kursen objektorienterad programmering med Java Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
Föreläsning2 Operativsystem.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
Formella metoder i MDI Behovet Vad menas med formell? Verktyg Exempel Att läsa: Kapitel 14 i kursboken.
Föreläsning 1 Introduktion till kursen. Algoritmer
XML, scheman och mappningar
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsningsanteckningar Kortfattat om programmeringsmetodik Ola Ågren Hur det går till att göra ett program.
Nationell satsning för kortare väntetider i cancervården
Anpassa fri programvara - Frihet ett, hur nyttjar man den? Copyright © 2006, 2007 Marcus Rejås Rejås Datakonsult Jag ger härmed rätten till alla att nyttja.
[Förbättringsprojekt]
IT Fördjupning Jon Wide
Presentationens avskrift:

Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar fredric.ragnar@hgo.se Telefon 0498-299948 Andreas Hedrén andreas.hedren@hgo.se Telefon 0498-299954

Centrala delar Ansvarsdriven design Koppling (coupling) Avgränsat ansvar (cohesion) Refactoring

Mjukvara förändras Mjukvara är sällan någonting som skrivs en gång och sedan är oförändrad Mjukvara byggs ut, korrigeras, underhålls, görs om och förändras Arbetet utförs av olika personer över tid (ofta årtionden)

Förändras eller dö Det finns två alternativ för mjukvara: Antingen genomgår den kontinuerlig förändring Eller så dör den Mjukvara som inte kan underhållas kommer att kastas

Kvalitativ kod Två viktiga delar för kvalitativ kod: Koppling (coupling) Avgränsat ansvar (cohesion)

Koppling (coupling) Koppling syftar på länkar mellan olika delar av ett program Om två klasser är starkt beroende av flera detaljer hos varandra finns det en stark koppling mellan klasserna Vi eftersträvar svag koppling mellan klasser

Svag koppling Svag koppling gör det möjligt att: Förstå en klass utan att behöva läsa andra klasser Förändra en klass utan att det påverkar andra klasser Därför ökar möjligheten att enkelt underhålla och återanvända koden

Avgränsat ansvar (cohesion) Begreppet syftar på antalet och spridningen av olika funktionalitet som en enskild enhet är ansvarig för Avgränsat ansvar är något som ska eftersträvas för både klasser och metoder Vi eftersträvar att varje klass och metod har ett specifikt, väl avgränsat ansvar

Väl avgränsat ansvar Väl avgränsat ansvar gör det möjligt att enkelt: Förstå vad klassen eller metoden gör Ge tydliga och informativa namn Återanvända klasser och metoder

Väl avgränsat ansvar Metoder Klasser En metod ska ansvara för en och endast en väl avgränsad uppgift Klasser Klasser ska representera en väl definierad och avgränsad enhet

Duplicering av kod Duplicering av kod, dvs att samma eller snarlik kod finns på flera platser: Är en indikator på att designen är felaktig Gör det svårare att underhålla koden Kan medföra att fel introduceras vid underhåll

Ansvarsdriven design Fråga: Vart ska vi lägga till en ny metod (vilken klass)? Varje klass ska vara ansvarig för att ändra sin egen data Klassen som äger data ska också ansvara för att bearbeta den Ansvarsdriven design medför svag koppling

Gör förändringar lokala Ett mål med att minska koppling (beroende) mellan klasser och med ansvarsdriven design är att göra förändringar lokala När en förändring är nödvändig bör så få klasser som möjligt påverkas

Tänk efter före När vi designar klasser bör vi fundera på vilka förändringar som är sannolika i framtiden Vårt mål är att designa klasser som är enkla att förändra

Refactoring Ny kod introduceras ofta när klasser underhålls Klasser och metoder blir ofta längre Då och då bör vi gå igenom koden för att se till att metoder och klasser har avgränsade ansvarsområden och att vi har svag koppling mellan klasser Det kan var att flytta en metod till en annan klass eller att dela upp en metod i två Processen kallas refactoring

Refactoring och testning Separera refactoring av kod från andra förändringar Testa både före och efter refactoring för att vara säker på att ingen funktionalitet har påverkats

Designfrågor Vanliga frågor: Hur långa bör en klass vara? Hur långa bör en metod vara? Bör inte besvaras med antal rader utan genom att titta på ansvar och koppling till andra klasser

Designrekommendationer En metod är för lång om den utför mer än en logiskt uppgift En klass är allt för komplex om den representerar mer än en logisk enhet Om det är svårt att ge metoden eller klassen ett bra namn är det ett tecken på att den har ett för stort ansvarsområde Tänk Mañana

Summering Ansvarsdriven design Koppling Avgränsat ansvar Refactoring