Hvordan man skriver koden.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Object-Orienteret Programmering og Design. 2 Nordjyllands Erhvervakademi – 2009 Indhold “Classes, objects and object-oriented programming (OOP) play a.
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
09 – Arv og polymorfi i java
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Forelæsning 3.1 Collections Javas for-each løkke
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Mønstre En lille introduktion. Singleton Tilgå et objekt igennem klassereference i stedet for objektreference.  Overflødiggør referencer til objektet.
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Objekter og klasser Rasmus D. Lehrmann DM
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
GP 6, 13/ Grundlæggende programmering Forår 2002 Forelæsning 6 onsdag 13/ kl. 9:15 – 12:00.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
11 - Exceptions. 2 NOEA2009Java-kursus – Exceptions Hvad er en exception? En undtagelse. Typisk en fejl der opstår runtime Afbryder det normale programflow.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
FEN IntroJava AAU1 Endnu mere om Klasser og Objekter Mange til mange relationer Student-Course v3.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Variabler, klassevariabler, identitet og lighed, collections
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmeringkd.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
 Jens Bennedsen 2001Multimedie programmering3A.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

Hvordan man skriver koden. 05 – OOP i java Hvordan man skriver koden.

Definering af klasser <modifier> class <name> { <attributeDeclaration>* <constructorDeclaration>* <methodDeclaration>* } hvor <modifier> er en access modifier. Kan evt. Kombineres med andre modifiers.

Eksempel public class StudentRecord { //we'll add more code here later } public – betyder at klassen kan tilgås af andre klasser udenfor pakken class - Keyword i Java for at angive at det er en klasse StudentRecord – et entydigt navn for klassen

Coding Guidelines Giv klassen et sigende navn, ikke bare MinKlasse  Klasse navn starter, pr. konvention, med stort bogstav. Navnet på filen, hvor klasse ligger SKAL hedde det samme som klassen. Der kan være flere klasser i en fil, men kun een public

Instans variable (attributter) vs. klasse (static) variable Tilhører en objekt instans Værdien af en variabel i et objekt er forskellig for værdien i et andet objekt Klasse variable (static variable) Variable der tilhører hele klassen Det betyder at de har samme værdi for alle objekter af klassen

Klasse variable

Erklæring af attributter <modifier> <type> <name> [= <default_value>];

Instans variable private betyder at variablen kun kan tilgås indefra klassen public class StudentRecord { // Instance variables private String name; private String address; private int age; private double mathGrade; private double englishGrade; private double scienceGrade; private double average; //we'll add more code here later }

Coding Guidelines Erklær alle instans variable lige efter “public class MinKlasse {“ Erklær en variabel på en linie. Instans variable bør ligesom andre variable starte med lille forbogstav. Brug en passende datatype for hver variabel, der erklæres. Erklær instans variable (attributter) som private så det kun er instans metoder der direkte kan tilgå dem (indkabsling).

Klasse (static) variable Brug static til at erklære en static variabel private static int studentCount;

Erklær metoder <modifier> <returnType> <name>(<parameter>*) { <statement>* } <modifier> f.eks public og static <returnType> kan være alle datatyper (inkl. void) <name> navn på metoden <parameter> ::= <parameter_type> <parameter_name>[,]

Accessor (Getter) Metoder Bruges til at aflæse værdier fra attributter (instans / static variable) Skrives som returnType get<NameOfInstanceVariable>

Eksempel: Get metode public class StudentRecord { private String name; : public String getName(){ return name; } public – metoden kan kaldes af objekter udenfor klasssen String – retur typen getName – metodens navn () – ingen parametre til metoden

Det behøver ikke være simpel aflæsning public double getAverage(){ double result = 0; result=(mathGrade+englishGrade+scienceGrade)/3; return result; }

Mutator (Setter) Metoder Bruges til skrive / ændre værdien af attributter (instans/static). void set<NameOfInstanceVariable>

Eksempel: Mutator (Setter) Metode public class StudentRecord { private String name; : public void setName( String temp ){ name = temp; } public – metoden kan kaldes af objekter udenfor klasssen void – retur typen. void betyder at metoden ikke returner noget setName – metodens navn (String temp) – parameter der bruges inden i metoden

Flere return statements Det er muligt at have flere return statements, sålænde de ikke er i den samme blok Det er dog normalt god programmeringsskik at returnere i bunden I stedet for variable kan man også returnere konstanter

Eksempel: Flere return statements public String getNumberInWords( int num ){ String defaultNum = "zero"; if( num == 1 ){ return "one"; //return a constant } else if( num == 2){ return "two"; //return a constant //return a variable return defaultNum;

Kan også skrives som public String getNumberInWords( int num ){ String resultNum = "zero"; if( num == 1 ){ resultNum = "one"; } else if( num == 2){ resultNum = "two"; //return a variable return resultNum;

Static methods public class StudentRecord { private static int studentCount; public static int getStudentCount(){ return studentCount; } static – betyder at metoden er static, og skal kaldes med [KlasseNavn].[MetodeNavn]. Metoden kan kun tilgå andre static metoder og variable. studentCount kan f.eks tælles op i konstruktøren public StudentRecord(…) { studentCount++; .. }

Hvornår bruge static metoder? Når logik og aktuel tilstand ikke involverer et bestemt objekt Beregningsmetoder Math.cos(x)

Coding Guidelines Metode navne bør starte med lille forbogstav Metode navne bør starte med verbum (getName, printList) Lav altid dokumentation til metoden. JavaDoc: /**….*/

Eksempel der bruger StudentRecord klassen

Program Output Anna Student Count = 3

Metode overloading Dette gælder for overloadede metoder: tillader en metode med det samme navn men forskellige parametre, at have forskellige implementeringer og returnere værdier af forskellige typer kan bruges når den samme operation har forskellige implementeringer. Dette gælder for overloadede metoder: samme metode navn forskellige parametre eller forskelligt antal af parametre retur type kan være ens eller forskellig

Eksempel public void myprint(){ System.out.println("First overloaded method: Nothing is passed on"); } public void myprint(String name ){ System.out.println("Second overloaded method: Name:"+name); public void myprint(String name, double averageGrade){ System.out.print("Third overloaded method: Name:"+name+" "); System.out.println("Average Grade:"+averageGrade);

Konstruktør Konstruktøren bliver kaldt lige efter at objektet er oprettet. Den bruges normalt til initialisering. Konstruktøren har flg. egenskaber: Konstruktører har det samme navn som klassen. En konstruktør uden parametre kaldes default konstruktør Hvis der ikke er implementeret nogle konstruktører, oprettes automatisk en tom default konstruktør En konstruktør er bare som en almindelig metode, men uden retur værdi (heller ikke void!) En konstruktør kan ikke kaldes direkte, kun i forbindelse med new. Hvis du har mange overloads af konstruktøren, kan du med fordel lave en private init metode som kaldes fra de enkelte konstruktører

Nogle konstruktører public StudentRecord(){ //some initialization code here } public StudentRecord(String temp){ this.name = temp; public StudentRecord(String name, String address){ this.name = name; this.address = address;

Brug af konstruktører public static void main( String[] args ){ //create three objects for Student record StudentRecord annaRecord=new StudentRecord("Anna"); StudentRecord beahRecord=new StudentRecord("Beah", "Philippines"); StudentRecord crisRecord=new StudentRecord(80,90,100); //some code here }

“this()” constructor call Det er muligt at kalde en konstruktør indefra en anden konstruktør med this() this() skal være det første statement i konstruktøren Efter this() kan der komme andre statements

Eksempel

“this” referencen this kan kun bruges ifm. instans variable og metoder Referer til objektet selv Bruges mest til at referere instans variable somhedder det samme som en metode parameter Eksempel: this.<nameOfTheInstanceVariable> this kan kun bruges ifm. instans variable og metoder public void setAge( int age ){ this.age = age; }

Access Modifiers Der er 4 typer af access modifiers i Java public (mindst restriktiv) protected (bruges ifm. arv) default (når modifier ikke er angivet.) private (mest restriktiv)

public public angiver at klassens medlemmer (variable og metoder) kan tilgås af alle objekter og klasser. Klassens public medlemmer kaldes også klassens interface (ikke at forveksle med interface keyword) public class StudentRecord { //default access to instance variable public int name; //default access to method public String getName(){ return name; }

protected protected angiver at klassens medlemmer kun kan tilgås af metoder i klassen selv, metoder i klasser i samme package eller af metoder i nedarvede klasser. Den nedarvede klasse kan være placeret i en anden package. public class StudentRecord { //default access to instance variable protected String name; //default access to method protected String getName(){ return name; }

default Default angiver at det kun er klasser i samme package der har adgang til metoden eller variablen Der er ikke nogen default modifier keyword. public class StudentRecord { //default access to instance variable String name; //default access to method String getName(){ return name; }

private private angiver at klassens medlemmer kun kan tilgås fra metoder i klassen selv public class StudentRecord { //private access to instance variable private String name; //private access to method private String getName(){ return name; }

Java Program Structure: The Access Modifiers

Coding Guidelines Instans variable bør normalt erklæres private og tilgås via get og set metoder Dermed skjules implementation og det muligt at ændre på datarepræsentation uden at skulle de steder hvor variable tilgås