Refaktorisering och UML med Eclipse

Relevanta dokument
Refaktorisering och UML med Eclipse

Refaktorisering och UML med Eclipse

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Verktyg och Utvecklingsmiljö. Jochim von Hacht

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

2 Eclipse en handledning

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Eclipse en handledning

Laboration 10 - Eclipse

NetBeans 5.5. Avsikt. Projektfönster

Eclipse. Kort genomgång

Eclipse en handledning

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Editering, Kompilering och Exekvering av Javaprogram

Länkade listor och automatisk testning

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

Att använda Java SE JDK 6

Chapter 4: Writing Classes/ Att skriva egna klasser.

NetBeans 7. Avsikt. Projektfönster

Föreläsning 2 Verktyg m.m.

TDP005, Projekt: objektorienterade system

Classes och Interfaces, Objects och References, Initialization

Versionshantering. Jan Erik Moström

Komma igång med Qlikview

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Datorlaboration 0, Programmering i C++ (EDA623)

Kort om klasser och objekt En introduktion till GUI-programmering i Java

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Laboration 1 Introduktion till Visual Basic 6.0

JAVA Mer om klasser och objektorientering

LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015

Kompilering av Java-program med eclipse SDK för den som kan BlueJ

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Laboration 2: Designmönster

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Objekt, Klasser, Paket m. m.

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Datorlaboration 0, Programmering i C++ (EDAF30)

Guide till RefWorks Skapa ett RefWorks-konto Under Citera och referera > RefWorks Hjälp funktioner i RefWorks Help Tutorial Help

Komponenter med COM (och COM+/VC++ 7.0)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 13 Innehåll

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

TUTORIAL: SAMLING & KONSOLL

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Laboration 10 - NetBeans

TUTORIAL: KLASSER & OBJEKT

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Laboration 1: Figurer i hierarki

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll

Inkapsling (encapsulation)

Tentamen i Objektorienterad modellering och design

ID1004 Laboration 4, November 2012

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Objektsamlingar i Java

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Laboration 3 GUI-programmering

NYHETER I AUTOCAD LT 2008

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Laboration 2: Designmönster

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Word-guide Introduktion

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Tentamen i Objektorienterad modellering och design Helsingborg

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Tentamen i Objektorienterad modellering och diskreta strukturer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Att använda Java SE JDK 6

Excel-guide. Introduktion

Objektorienterad programmering i Java

NYHETER I AUTOCAD 2005

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Malmö högskola 2007/2008 Teknik och samhälle

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Tentamen i Objektorienterad modellering och diskreta strukturer

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Tentamen i Objektorienterad modellering och design Helsingborg

Objektorienterad Programmering (TDDC77)

Objektorientering: Lagring och livstid

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Transkript:

1. Introduktion Refaktorisering och UML med Eclipse Eclipse är en utvecklingsmiljö för allehanda uppgifter. Den innehåller bland annat ett mycket kvalificerat stöd för programutveckling i Java. Den är särskilt lämplig för denna kurs eftersom det är lätt att göra designförändringar och det finns integrerade verktyg för design med UML. Eclipse är utformat som ett ramverk så att man enkelt kan lägga till ny funktionalitet med stickproppar (plug ins) som man kan hitta på nätet eller skriva själv. Propparna innehåller i regel kompilerade Java klasser som implementerar gränssnitt i ramverket. Det kommer löpande nya versioner av Eclipse och proppar som inte alltid fungerar tillsammans. Även Java miljön ingår i systemet som stickproppar. I denna laboration skall du installera en stickpropp från nätet för att kunna modellera med hjälp av UML. 2. Konfiguration Det finns ett många Eclipse-baserade verktyg för att modellera med UML, se t.ex. http://marketplace.eclipse.org/. Det verktyg vi använt tidigare år i motsvarande kurser i Lund finns inte längre i någon fri version så vi måste byta. Jag vet inte vilket som är bäst och studenter brukar ha olika preferenser. Beskrivningen i detta dokument använder Green UML, http://green.sourceforge.net. Green UML är tämligen primitivt och kan bara användas för klassdiagram. Det duger för användning i denna kurs. Det är tillåtet att använda valfritt datorbaserat verktyg för att producera UML-diagram. Om någon hittar något som är riktig bra vill jag gärna bli informerad. Du skall själv konfigurera Ecplise för att kunna använda UML-verktyget. Under menyalternativet Help Install new software skall du lägga till ett par plugins. Välj Add fyller i Location med http://download.eclipse.org/tools/gef/updates/releases. Följ anvisningarna tills installationen är klar. Välj den senaste releasen. Det tar flera minuter att installera denna plugin. Det är förmodligen onödigt att starta om Eclipse innan man installerat nästa plugin. På studentdatorerna i laborationssalarna (beror på vilken version av Eclipse som är installerad) behövs ytterligare en plugin för att kunna installera Green: http://download.eclipse.org/releases/indigo/. Lägger man till denna adress innan man installera Green så fungerar det (du behöver inte välja någon plugin utan den hittar den själv). Installera sedan Green: http://www.cse.buffalo.edu/faculty/alphonce/green. Välj att installera Green men inte Green Add-Ons. Det är lämpligt att ändra inställningarna för Green UML under Preferences Green åtminstone så att bara Generate stubs for inherited abstract methods och Save compilation units är markerade. I Preferences Green Class Boxes bör Show method parameter names och Show tooltips vara markerade. 3. Java-editorn Standard-editorn för Java kan väldigt mycket av språket och rapporterar hela tiden fel och är beredd att hjälpa till på olika sätt. Fel markeras med vågstrecksunderstrykning och ett erbjudande om hjälp indikeras med en liten glödlampa i vänsterkanten. Om man skriver början på ett reserverat ord eller ett namn och därefter CTRL-mellanslag så kommer editorn att föreslå ett antal alternativ. Efter wh ges fyra alternativ för while-satser och några klassnamn som du förmodligen inte hört talas om. Genom att flytta sig till alternativen kan man få se 1

hur Eclipse kommer att komplettera. Man accepterar med return eller dubbelklick. Editorn känner också till namn på dina egna variabler, metoder och klasser. Man kan skriva main och få en hel main-metod och sysout för System.out.println(). Ett tos på en plats där man kan definiera metoder ger som första alternativ att skugga metoden tostring. Mallarna finns i Preferences Java Editor Templates där man själv kan modifiera och lägga till. När man skriver en punkt efter ett objektnamn erbjuds också ett antal alternativ. Antalet reduceras allteftersom man skriver vidare. Om man skriver x=1; utan att ha deklarerat x visar editorn en liten lampa som erbjuder att deklarera en lokal variabel, lägga till ett attribut eller en parameter. När lampan är dekorerad med ett litet kryss finns det fel som måste åtgärdas. Ett utropstecken betyder ofta att något är onödigt och kan tas bort utan att programmets funktionalitet förändras. 4. Menyer och genvägar Det finns ofta flera sätt att anropa en operation. De flesta operationerna kan nås via huvudmenyerna, File, Edit, etc. Många av operationerna förutsätter att man markerat det element som skall påverkas. Om man inte gjort kan alternativet vara nedtonat eller saknas. En del operationer har egna ikoner under raden med huvudmenyer. Editorer och vyer har ofta egna verktygsikoner. Genom att högerklicka på ett element öppnar man elementets kontextmeny. Om man vill att operationen skall gälla alla element i editorn skall man se till att inget element är markerat och högerklicka i bakgrunden. En del kommandon har tangentbordsgenvägar. Sådana syns till höger i vanliga menyer. Mycket går att konfigurera efter eget tycke, t ex via Preferences General Keys och Window Customize Perspective.... Inställningar kan sparas, exporteras och importeras. 5. Source-menyn Med Source Format formateras programmet så att indenteringen, inskjutna mellanslag, tomma rader etc. blir konsekvent. Det går att i detalj styra hur detta skall gå till i Preferences Java Codestyle Formatter om man inte är nöjd med standardvärdena. Medlemmarna i en klass (attribut, metoder, klasser etc.) bör vara ordnade på samma sätt i alla klasser i ett projekt. Med Source Sort members åstadkommer man detta i en klass, ett paket eller i hela projektet. Via Preferences Java Appearance Member Sort Order kan man styra detaljer för sorteringen. När man behöver en ny konstruerare som ger värden åt några attribut använder man med fördel Source Generate Constructor using Fields. Source behövs. Organize imports sorterar import-klausuler, tar bort onödiga och lägger till sådana som Med Source Clean Up... får man en mer genomgripande städning av programmet med indentering, sortering, mm. Detaljerna kan styras via Preferences Java Code Style Clean Up. 6. Refactor-menyn Refactor-menyn innehåller mängd operationer för att omstrukturera programmet. Innehållet i menyn växlar efter vad som är markerat i Package Explorer eller editorer. 2

Namnbyten, Refactor Rename..., är en enkel och kraftfull operation. Om man byter namn på en klass kommer alla referenser till namnet i hela projektet att bytas ut. Om man så önskar kommer även liknande namn på attribut och metoder och förekomster i kommentarer att modifieras. Det enklaste sättet att flytta klasser mellan olika paket är att dra dem i Package Explorer. Det går att flytta metoder och attribut på samma sätt, men det kräver ofta efterarbete. I uppgiften nedan får du prova några andra operationer. Experimentera gärna; i regel går det att återställa programmet med Edit Undo. 7. Green UML UML-modellen är integrerad med Java-representationen av programmet så att förändringar i den ena i regel avspeglar sig i den andra. Java-filer måste sparas för att detta skall hända. Om UML-modellen inte är uppdaterad finns kommandot Refresh Editor i bildens kontextmeny eller kortkommandot f. Det kan vara bekvämt att skapa klasser och gränssnitt med UML-editorns palett, men undvik att skapa associationer; verktyget skapar de associerade objekten med parameterlösa konstruerare. Detta är nästan alltid fel. Programmet saknar automatisk layout-funktion. Det är inte alltid så lätt att få diagrammet att se ut exakt som man skulle önska. Ansträng dig inte mer än att diagrammet blir användbart som underlag för designdiskussionen. 8. Uppgift Denna uppgift innehåller enkel objektorienterad design och introducerar de viktigaste handgreppen i Eclipse. 1. Starta Eclipse. 2. Installera och konfigurera UML-verktyget. 3. Skapa ett nytt Java-projekt (geometry) via. 4. Skapa ett nytt Java-paket (element) med. 5. Öppna ett nytt UML-diagram med hjälp av kontextmenyn för paketet genom att välja Green UML Add to New Class Diagram. Motsvarande fil får namn efter projektet. Det kan vara lämpligt att namnge det efter paketet för att underlätta när det blir flera paket. File Save As 6. Skapa klassen Point i UML-diagrammet genom att markera i UML-paletten och klicka på den plats i diagrammet där klassrutan skall placeras. Source folder (geometry/src) och Package (element) måste anges. Motsvarande Java-klass dyker upp i Package Explorer. 7. Öppna klassen och titta på koden. Skriv in en JavaDoc-kommentar. 8. Lägg till två privata attribut, x och y, av typen double i Java-editorn. När man sparar filen kommer attributen att bli synliga i UML-diagrammet. (Syns inte klassen i UML-diagrammet kan du lägga till den genom att högerklicka på Java-filen och välja Green UML/Add to LastViewed Class Diagram.) 9. Skapa en konstruktor med de två attributen via Source Generate Constructor Using Fields. Kryssa gärna i Omit call to default constructor super(). 10. Lägg till metoden public double distanceto(point other) i Java-editorn och låt den returnera avståndet mellan this och other. Gör en JavaDoc-kommentar för metoden. 3

11. Formattera klassen med Source Format. 12. Gör en JUnit-test för distanceto via File New JUnit Test Case. Följ anvisningen att lägga till JUnit-paketet i build path. Implementera metoden test och använd någon assert-metod. Exekvera testet med Run Run As JUnit Test. 13. Skapa ett nytt paket för tester och flytta testklassen dit. Testa igen. 14. Vi skall nu ändra modellen så att den kan hantera punkter och segment antingen i 2 eller 3 dimensioner. Byt namn på Point till Point2D via Refactor Rename. 15. Extrahera ett gränssnitt från Point2D med metoden distanceto via Refactor Extract Interface. Låt gränssnittet få namnet Point. 16. Ändra signaturen för distanceto med Refactor Change Method Signature så att argumentet får typen Point. Korrigera Point2D så att distanceto fortfarande fungerar. 17. Titta på UML-diagrammet och se så att det har blivit uppdaterat. 18. Skapa en klass Point3D med tre koordinater genom att utgå från en kopia av Point2D. 19. Infoga Point3D i UML-diagrammet genom att välja Green UML Add to Last Viewed Class Diagram i kontextmenyn i Types -fönstret. 20. Skapa en klass, Segment, som representerar en sträcka med hjälp av dess ändpunkter. 21. Implementera metoden double length() i Segment så att den returnerar sträckans längd. 22. Testa metoden. 23. Använd Source Clean Up... på hela paketet. Markera Use costum profile och kon- figurera efter egna önskemål, t ex genom att avmarkera Add missing Annotations under fliken Missing Code och markera de fem rutorna under fliken Code Organizing. 24. Orientera dig om vad som kan konfigureras i Preferences. 25. När uppgiften är färdig bör UML-diagrammet se ut ungefär så här. 4

5