Föreläsning 2 Verktyg m.m.



Relevanta dokument
Verktyg och Utvecklingsmiljö. Jochim von Hacht

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

NetBeans 5.5. Avsikt. Projektfönster

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

NetBeans 7. Avsikt. Projektfönster

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

Paket i Java. Joachim von Hacht

Eclipse en handledning

2 Eclipse en handledning

Eclipse en handledning

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

Att använda Java SE JDK 6

Laboration 10 - Eclipse

Editering, Kompilering och Exekvering av Javaprogram

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Laboration 10 - NetBeans

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

Föreläsning 10. Paket Synlighet Arkiv. DA129A Programmering 1

Eclipse. Kort genomgång

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for AVR

2I1049 Föreläsning 9. Iterativ programutveckling. Iterativ programutveckling. Modularisering, återanvändning och JavaBeans

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

Versionshantering. Jan Erik Moström

Att använda Java SE JDK 6

JAVA Mer om klasser och objektorientering

Programmering i C++ Kompilering från kommandoraden

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Imperativ programmering. Föreläsning 4

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

F4. programmeringsteknik och Matlab

Så här skriver du ditt första program i C++

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

AVR Studio 4 Och AVRFLASH

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Föreläsning 3. Programmering, C och programmeringsmiljö

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Refaktorisering och UML med Eclipse

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

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

Kompilera och exekvera Javakod

Objekt, Klasser, Paket m. m.

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

Tentamen Programmering fortsättningskurs DIT950

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Refaktorisering och UML med Eclipse

Objektorienterad programmering i Java I

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

A ToolGuide for Eclipse: En fördjupning i några av verktygen i Eclipse och hur de underlättar XP s practices

Code-Lite tutorial ( /RoJ)

Windows Forms Winstrand Development

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Laboration 1 - Grunderna för OOP i Java

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Grundkurs i programmering - intro

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Android och iphone. Kalle Prorok April 2011

Laboration 2: Ett kommunikationssystem

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

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

Laboration 1 Introduktion till Visual Basic 6.0

Labb 1: Vad, hur, och varför?

Objektorienterad Programmering (TDDC77)

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

Versionshantering med Git

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

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

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Stackar, köer, iteratorer och paket

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

TDP005, Projekt: objektorienterade system

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Gissa ordet, tutorial

TUTORIAL: KLASSER & OBJEKT

Chapter 4: Writing Classes/ Att skriva egna klasser.

Lab 1: Första labben (2p) Inledning:

ID1020 Introduktion av Maven. Dr. Jim Dowling

ID1004 Laboration 3, 5-6 November 2012

EDAA45 Programmering, grundkurs

TUTORIAL: SAMLING & KONSOLL

Design av en klass BankAccount som representerar ett bankkonto

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

SKAPA DET FÖRSTA PROJEKTET I mikrobasic PRO for PIC

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Transkript:

Föreläsning 2 Verktyg m.m.

Innehåll Java-paket Utvecklingsmiljö (development environment) Hur man organiserar sin utvecklingsmiljö Verktyg (tools) Editorer, debuggers, IDE's (integrated development environments), m. m. Ingenjörsmässigt arbetssätt Best practices, m.m... 2

Organisation av Java Program Program består normalt av (väldigt) mycket kod Java JDK 1.5, 33762 ncss (non commenting source statements) Koden organiserad i 671 klasser, gränssnitt, enum, m.m. Hur organiserar man program med (väldigt) många klasser, gränsnitt, m.m.??? Eclipse 3.0, 21.000+ klasser Vi behöver en större enhet..! 3

Paket (Packages) [Java] Programs are organized as sets of packages. //Java language Specification 3Ed Chapter 7 Program Paket (UML symbol) 4

OBS: Begrepp En applikations delar Paket? Moduler? Komponenter? Subsystem? Oklara begrepp Ibland samma sak, ibland olika, ibland överlappande,... Finns ingen allmänt accepterad definition 5

Paketmedlemmar Paketmedlemmar är klassertyper (class, enum), gränssnittyper (interface, m.fl.) och (sub) paket Unika namn inom paketet Eftersom paket kan vara medlemmar får vi en hierarki, återkommer... I fortsättningan; Typ = class, interface eller enum 6

OBS: Språk All programutveckling sker på Engelska Alla filer/kataloger på Engelska Alla kod skrivs på Engelska (även kommentarer) Undvik namn med, : och liknande 7

Paketdeklaration Anger i vilket paket typen ingår Anges först i filen m.h.a. package // File Operator.java package calculator; public class Operator { Typer tillhör exakt ett paket Anges inget tillhör det default package Paketnamn skrivs med enbart små bokstäver 8

Subpaket Subpaket anges med punktnotation toplevel.sub.subsub //Subpackage of calculator package calculator.gui; public class MainFrame { 9

Paket och Synlighet Default: Typer bara synliga inom paketet package calculator; class Operator{ //Use in calculator only } Kan göras tillgänglig för andra paket package calculator; public class Operator { } Undantag: java.lang.* (importeras automatiskt) 10

Paket och Synlighet (forts) Om man utelämnar accesspecificationen (public, private, protected) gäller paketsynlighet Typer i samma paket kommer alltså åt instansvariabler, dåligt Ange alltid access 11

Kvalificerade typnamn Kvalificerade typnamn = paketnamn + typnamn package calculator.gui; public class MainFrame { } // Fully qualified name calculator.gui.mainframe 12

Unika kvalificerade typnamn Måste ha unika typnamn Skall inte uppstå problem då man t.ex. hämtar kod från nätet Skapa unika kvalificerade typer genom ett antal inledande tomma paket // edu.chl.hajo just to make type name // unique (no types in packages) package edu.chl.hajo.calculator.gui public class MainFrame { 13

Import deklarationer Om man använder typer från anda paket Måste referera till en typens kvalifierade namn Jobbigt att skriva En import-deklaration gör att man kan använda det okvalificerade typnamnet En ren bekvämlighet Inget speciellt händer Ibland problem (måste ange kvalificerat namn) java.util.date och java.sql.data (i samma klass) 14

Pakettillhörighet Hur placera typer i paket? Icke-trivialt (finns inget givet svar) Logiskt sammanhörade i samma paket De utför tillsammans en bestämd uppgift Kallas ofta subsystem Klasser som representera den data programmet arbeter med Kallas ofta OO-modellen (eller analys modell eller domän modell) Rena hjälpklasser 15

Paket och Filsystem I Java en koppling mellan paket och mappar i filsystemet Ett paket (den logiska enheten) motsvaras av en (sub) mapp i filsystemet (konkret enheten) //Must be in directory calculator package calculator; public class Operator {... //Must be in subdirectory gui of calculator package calculator.gui; public class MainFrame {... 16

Några Typiska Paket edu.chl.hajo.calculator Toppaket för en applikation som skall heta calculator. Innehåller enbart Main-klassen edu.chl.hajo.calculator.gui GUI delar till programmet edu.chl.hajo.calculator.core Klasser so utgör själva kärnan I programmet edu.chl.hajo.calculator.util Diverse hjälpklasser 17

Paket och Programdesign Ingår t.ex. i design mönstret Facade Fördelar Information hiding på typnivå (dölja typer) Minimera beroenden mellan paket Möjligt att byta ut ett helt paket (kanske kommit en effektivare implementation) 18

Nästa Organisationsnivå Om man har väldigt många paket? Skapa jar-filer (bibliotek) med ett antal paket Skapas med kommandot jar jar cvf calculator.jar C bin edu Bygg upp programmet med bibliotek Om man har många bibliotek (med många olika versioner)... Eventuellt; jar hell 19

Utvecklingsmiljö Ett program består av mer än Java-filer Paket, konfigurationsfiler, ikoner, program-externa texter (i18n), testsviter, m.m. Då man startar utvecklingen organiserar man sin miljö Normalt skapas en projektkatalog Ev. redan klart I labbar 20

Källkod och Binärer Vill vi skilja på källkod (source = *.java) och binärer (binaries = *.class) Annars får vi dubbelt antal (snarlika) filer på samma ställe, rörigt class-filer ointressanta arbetar inte med dessa Binärerna kan vi kasta, nya efter varje kompilering 21

Filstruktur Utvecklingsmiljö Struktur projektkatalog (.ep = Eclipse project, mer strax...) myproj.ep // project directory bin // binaries edu // package hierarchy... //...created at compilation src // source edu // package hierarchy... //...created by you 22

OBS: Filhantering Måste ha full kontroll på filer! Vilka har jag? Var de finns? Vad kör jag? Annars: Problem!!! Skulle ha lyssnat på Joachim... 4 timmar senare... 23

Kompilera och Exekvera Java kompilatorn måste veta var alla java-filer finns (en enda rad) javac sourcepath src edu.chl.hajo... Main.java d /bin Java-maskinen måste veta var alla class-filer finns Om du står i projektkatalogen (-v) java cp./bin edu.chl.hajo... Main cp = classpath = där pakethierarkin för binärer börjar Därefter: Kvalificerade namnet på klassen som innehåller main-metoden (enkelt: Den heter Main) 24

Verktyg Vi kommer att använda Open Source Finns gratis på Webben 25

Eclipse i Princip Skapa projekt Kommer att skapa projektkatalogen enligt föregående Lägg till filer och annat m.m. av File > New... Koda, kör, felsök Använd Eclipse för att generera kod Vid behov strukturera om för att få bättre namn m.m. (refactor) Klart: Skapa en jar-fil för leverans till kund 26

Eclipse Begrepp View, ett internt fönster t.ex. Package Explorer Editor, ett fönster där man kan behandla text (i vårt fall bara Java kod) Generellt finns massor med editorer, C/C+ +/PHP/Perl/... Perspective, en viss uppsättning view's och editor's ordnade på ett visst sätt (layout) Vi använder: Java Perspective, Debug perspective Allt finns under Window menyn 27

Eclipse Demo Ni kommer att göra all detta i eftermiddag Demon går för snabbt Eclipse video tutorial här 28

OBS: Eclipse, se upp! Ibland uppdateras inte ikoner m.m. I GUI:et Felmarkeringar ligger kvar. Spara så uppdateras GUI:et Eclipse kompilerar automatisk i bakgrunden hela tiden Men om konstiga saker händer kan man tvinga Eclipse att verkligen kompilera om allt Meny: Project > Clean... 29

Felsökning Läs felutskrifter!!! Läs uppifrån och ner! Skala ner d.v.s. kommentera bort bit för bit till felet försvunnit Avkommentera en bit i taget till felet hittats ALDRIG ta bort (görs då man vekligen vet)!! Använd en debugger Finns inbyggt I Eclipse Undvik System.out.println() 30

Debugger Ett program som kan köra ditt program steg för steg "i slow motion" Kör sats för sats (statement) Före/efter varje sats kan man inspektera variabelvärden m.m. 31

Eclipse Debug Demo Detta kommer ni också att göra... 32

Kodkvalité För att skriva högkvalitativ kod krävs lång och bred erfarenhet Finns böcker Finns samlingar av s.k. best practices d.v.s. hur man erfarenhetsmässigt bör göra Se t.ex. Collected Java Practices Finns gott om verktyg för att analysera kodkvaité t.ex. Findbugs 33

Findbugs Undersöker koden utifrån ett stort antal kvalitets -regler (bug patterns) Bug patterns Statisk analys av binärer Vårt program körs inte Om programmet bryter mot någon regel ges en varning Delar upp felen i olika kategorier Correctness, Bad practice, Dodgy Visar var i källkoden problemet finns 34

Findbugs Demo Ni kommer att göra detta i eftermiddag 35