Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays.

Slides:



Advertisements
Lignende præsentationer
SPBG.  Test driven development  Unit test frameworks  MOSS TDD  Mocking  Design patterns.
Advertisements

Throw a die Read the current value of index Add 1 Return the new value to index IndexIndex Create an empty array to count the number of dice throws Initialize.
Location-Based services. Maps Agenda •Geocoding •Interaktive kort med Map Vievs og Map Activities •Overlays til kort •Location-based services •Advarsler.
Velkommen til Softwarekonstruktion
Februar 2005Sprog-nyheder i C# og VB1 Captator Tlf: Henrik Lykke Nielsen Softwarearkitekt, Microsoft Regional Director for Denmark.
C#: Data Typer. Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies, written in different languages, to.
07 – Kort om OO Introduktion.
1 Frameworks. 2 Plan Frameworks • Kollektioner • Input/output Nyt designmønster: Decorator.
RT Speciale Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende ”Java Optimized Processor” (JOP) Speciale – efterår.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Arkitektur Embedded SQL Tema Persistens
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
Effective Java items Orange gruppe Thuy, Janne, Mads T.P., Oliver og Sebastian.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
06 – Java Packages Packages og ClassPath. 2 NOEA2009Java-kursus – Packages og class path Hvad er Packages? En package er en gruppering af relaterede typer.
Programmeringsteknologi: Lektion 1
Collectionklasser Klassifikation og anvendelse. Collections Motivation –hvorfor bruge collections? Realisering af en-til-mange relationer –Importer, erklær,
1 Parsing. 2 Mål: Et program til indlæsning og beregning af aritmetiske udtryk Eksempel: Beregn (3*5 + 4/2) - 1 Løs et lettere problem først: Læs en streng.
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
Objekter og klasser Applikationsdesign Code Namespace Value og reference typer Reference type Rasmus D. Lehrmann1.
12 – GUI med Swing. 2 NOEA2009Java-kursus – GUI med Swing Designer view Komponenter Frame Properties Inspector.
09 – Arv og polymorfi i java
Hvordan man skriver koden.
Tråde og synkronisering. Tråde To typer tråde Dedikerede tråde -programmør opretter og tilknytter metode -”kører tråd-metoden (job) én gang” Tråd pulje.
Abstrakte klasser og interfaces i Java
Object-Orienteret Programmering og Design Kilde: Joe Hummel.
Programering af mobile enheder Windows Phone Storage.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Begreber og Redskaber 9. Plan for idag I dag: Datastrukturer Tabeller Lister, mængder, maps, grafer Hægtede lister.
Arrays ● Arrangere erklærede ens datatyper ● Giver mulighed for indeksering med tal ● Valgfri størrelse ved oprettelse ● Er integreret i sproget/compileren.
Gruppe sort Morten, Peter, Jesper, Spencer & Støving.
Collectionklasser Ekstra materiale. Collections Motivation – hvorfor bruge collections? Realisering af en-til-mange relationer – Importer, erklær, initialiser.
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
Forelæsning 3.1 Collections Javas for-each løkke
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Items 4, 14, 24, 34, 44, 54 Orange gruppe Liv, Jonas, Thorkil, Søren S og Martin D.
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.
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
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.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Anvendelser I Leg og spil.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Blå gruppe: Søren, Alexander, Torben, Lasse. De 4 vigtige items: - Singelton - Override clone judiciously - Use interfaces only to define type - Prefer.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
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.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
RMS - Record Management System Record Store En Record er et bytearray af vilkårlig størrelse En RecordStore er et antal Records nummerede.
Præsentationens transcript:

Item gennemgang  Item: 01 – Static factory methods  Item: 09 – Override hashCode  Item: 17 – Design & document inheritence  Item: 25 – Lists over arrays  Item: 33 – EnumMap instead of indexing  Item: 41 – Overloading  Item: 49 – Primitive type over boxed primitive  Item: 57 – Exceptions for exceptional use

Consider static factory methods instead of constructors Public static factory metoder Returnerer en instans af klassen Kan bruges som supplement til, eller erstatning for constructors Fordele De kan have logiske navne De behøver ikke at oprette/la ve et nyt objekt af klassen (ulig constructors) Kan returnerer en hvilken som helst subtype af den egentlige return type Ulemper Klassen kan ikke være en supertype hvis den udelukkende har static fectory metoder De er ikke på samme måde synlige i API dokumentationen som constructors private Gøgler (String navn) { this.navn = navn; } Public static Gøgler getInstance(String navn) [ return instance == null ? Instance = new Gøgler(navn): instance; }

Always override hashCode when you override equals public static void main(String[] args) { Map map = new HashMap (); Person p1 = new Person("Mikkel", "Hansen"); map.put(p1, " "); // Printer System.out.println(map.get(p1)); // Printer null, hvis hashcode ikke bliver overridet System.out.println(map.get(new Person("Mikkel", "Hansen")));} public static void main(String[] args) { Map map = new HashMap (); Person p1 = new Person("Mikkel", "Hansen"); map.put(p1, " "); // Printer System.out.println(map.get(p1)); // Printer null, hvis hashcode ikke bliver overridet System.out.println(map.get(new Person("Mikkel", "Hansen")));} public int hashCode() { int result = 16; result = 31 * result + (null == firstName ? 0 : firstName.hashCode()); result = 31 * result + (null == lastName ? 0 : lastName.hashCode()); return result;}

Prefer lists to arrays Arrays Covariant: Hvis Suber subtype af Super, så er Sub[ ] subtype af Super[ ] Refied: Kender og gennemtvinger deres element typer ved run-time. Generics(Lists) Invariant: For distinktive typer Type1 og Type2 er List hverken subtype eller supertype til List. Erasure: Kender og gennemtvinger deres elementer ved compile-time // Fails at runtime! Object[] objectArray = new Long[1]; objectArray[0] = "I don't fit in"; //Throws ArrayStoreException // Won't compile! List ol = new ArrayList (); //incompatible types ol.add("I don't fit in");

Prefer lists to arrays Ulovlige generic arrays, som alle vil give geenric array creation error ved compile-time new List new List [ ] new E[ ] Ulovligt at skabe et generic array, da det ikke er type safe. // Why generic array creation is illegal - Won't compile! List [] stringLists = new List [1];// (1) List intList = Arrays.asList(42);// (2) Object[] objects = stringLists;// (3) objects[0] = intList;// (4) String s = stringLists[0].get(0);// (5)

Use overloading judiciously set.remove(i) list.remove(i) Fjerner element i Fjerner element med indeksering i list.remove((Integer) i) Fjerner element i af type Integer... de overloadede metoder har forskellige antal parametre... de er umodetagelige for samme typer... de giver samme resultat Ved brug af overloading sørg for at Bare fordi du kan overloade, betyder ikke at du skal

Design and document for inheritance or else prohibit it Farlig situation: En metode i klassen bruger en anden metode der kan overrides Ikke altid tydeligt hvordan de forskellige metoder bruger hinanden. Design og dokumenter: This implementation…” Test ved at skrive sub-klasser Forbyd: Erklær klassen for ”final” Lav ”public static factories” i stedet for konstruktorer

Use EnumMap instead of ordinal indexing Dårligt Brug ikke et array til at repræsentere Enum typer. int har ikke den samme type sikkerhed som Enum. Godt Brug EnumMap Er ligeså hurtig som et array Der indexeres med Enum direkte

Prefer primitive types to boxed primitives Integer i1 = new Integer(42); Integer i2 = new Integer(42); Integer i3; boolean b1 = (i1 < i2); // false boolean b2 = (i1 == i2); // false boolean b3 = (i3 < 55); // NullPointerException Primitive: int, double, long Boxed primitive: Integer, Double, Long

Use exceptions only for exceptional conditions Exeptions er KUN til exceptional conditions Brug dem aldrig til at ”optimere”. // Horrible abuse of exceptions. Don't ever do this! try { int i = 0; while(true) range[i++].climb(); } catch (ArrayIndexOutOfBoundsException e) { }