Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3.

Relevanta dokument
Generisk klass med typparameter Inre klass - ListIterator

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité?

Kopiering av objekt i Java

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

DAT043 - föreläsning 8

Föreläsning 10. ADT:er och datastrukturer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 2. Länkad lista och iterator

Föreläsning 9. Generiska enheter Inre klasser Anonyma klasser Kloning

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Föreläsning 2. Länkad lista och iterator

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

Classes och Interfaces, Objects och References, Initialization

Föreläsning 3. Stack

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

Arrayer. results

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Konstruktion av klasser med klasser

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Föreläsning 3. Stack

Tentamen Programmering fortsättningskurs DIT950

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

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Länkade strukturer. (del 2)

Laboration A Objektsamlingar

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

TENTAMEN OOP

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Objektorienterad Programmering (TDDC77)

Länkade strukturer, parametriserade typer och undantag

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Objektorienterad programmering med Java, Generics

Sammansatta datatyper Generics: Parametrisk polymorfism

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Generiska datatyper. Parametrisk Polymorfism: Generics. Generisk lista. Utvikning: Typer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

OOP Objekt-orienterad programmering

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 4 Innehåll

Laboration 1 - Grunderna för OOP i Java

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

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

JAVA Mer om klasser och objektorientering

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F4. programmeringsteknik och Matlab

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Versionshantering. Jan Erik Moström

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

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

Samlingar Collection classes

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Objektorienterad programmering i Java

LÖSNINGSFÖRSLAG

Föreläsning REPETITION & EXTENTA

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

OOP Objekt-orienterad programmering

Lösningar för tenta 3 DAT043,

Att skriva till och läsa från terminalfönstret

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

TENTAMEN OOP

Föreläsning 8: Exempel och problemlösning

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

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

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Objektorienterad Programmering (TDDC77)

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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

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

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

Transkript:

Grundläggande termer F11 Grunderna i Versionshantering Hålla koll på olika version, kunna gå tillbaka, etc. Repo/Repository - förvaring/administrering av förändringar Centraliserad/Decentraliserad Lokal repo/ remote -repo Revisioner - namnge/tagga Trunk/Master-spår Branch -gren/spår clone, commit, revert, rebase, merge, pull, cherry-pick, stash Merge-konflikter som måste hanteras Commits namnges http://www.dwahlberg.se/2011/versionshantering-for-nyborjare/ 383 Några olika system Det finns mängder av programvaror GIT Mercurial CVS SVN (Subversion). Senare programvara. Åtgärdar några av problemen som finns i CVS Dom flesta kör man i grunden i terminal-fönster Det finns även en mängd Program/web-tjänster som lägger på ett grafisk gränssnitt BitBucket, SourceTree, etc Det finns plug-ins/utökningar till många IDE:er för de vanligaste versionshanteringssystemen Eclips+Git, Eclipse+SVN, IntelliJ+Git, IntelliJ+ Mercurial,.. 384 http://onlywei.github.io/explain-git-with-d3/# http://marklodato.github.io/visual-git-guide/index-en.html Origin Local #1 Local #3 Local #2 https://git-scm.com/book/en/v2/git-basics-recording-changes-to-the-repository http://onlywei.github.io/explain-git-with-d3/# http://onlywei.github.io/explain-git-with-d3/#

Arbetsflöden Några grundläggande arbetsflöden Loggning av förändringar Backa till en tidigare version och fortsätta på den Jobba samtidigt med olika features Hantera olika versioner av samma system Jobba med de grundläggande arbetsflöden tillsammans med andra Logga och delge förändringar Kräver att man kan synkronisera vad olika 389 användare förändrar, mm Don t panic! GitFlow Generics F11 Generics Ännu ett sätt att lösa ett gammalt problem: skriva så lite kod som möjligt Hur implementerar vi då egna generiska klasser/metoder?

Jan Erik Moström Vill egentligen ha: Lista av heltal Lista av strängar Lista av... Återanvända algoritmer för olika datatyper Genrisk klass med Typ-parameter import java.util.iterator; public class GenericList<T> implements Iterable<T> private class Element implements Position private T value; private Element next; public Element() value=null; next=null; public Element(T value, Element next) this.value=value; this.next=next; private class ListIterator implements Iterator<T> Element next; public ListIterator(Element first) next=first; @Override public boolean hasnext() return next.next()!=null; Jan Erik Moström Genrisk metod med Typ-parameter static <T> void fromarraytocollection(t[] a, Collection<T> c) for (T o : a) c.add(o); // Correct o1.insert(new Object(), o1.first()); String s=s1.inspect(s1.first()); public static void main(string[] args) GenericList<String> s1=new GenericList<String>(); GenericList<Object> o1=s1; Type mismatch: cannot convert from GenericList<Sting> to GenericList<Object> Jan Erik Moström Men kod som fungerar på alla generiska klasser? Till exempel skriva ut alla saker i listan Innan generics import java.util.linkedlist; import java.util.list; public class Demo4b public static void main( String argv[] ) LinkedList l = new LinkedList(); l.add( "Hello" ); l.add( "World" ); public static void printstuff( List sl ) Object o = null; while(!sl.isempty() ) o = sl.remove(0); System.out.println( o );

import java.util.linkedlist; import java.util.list; public class Demo4b public static void main( String argv[] ) LinkedList<String> l = new LinkedList<String>(); l.add( "Hello" ); l.add( "World" ); public static void printstuff( List<Object> sl ) Object o = null; Demo4b.java:9: while(!sl.isempty() printstuff(java.util.list<java.lang.object>) ) in o = sl.remove(0); Demo4b cannot be applied to System.out.println( (java.util.linkedlist<java.lang.string>) o ); ^ 1 error public class Demo4b public static void main( String argv[] ) LinkedList<String> l = new LinkedList<String>(); l.add( "Hello" ); l.add( "World" ); public static void printstuff( List<?> sl ) Object o = null; while(!sl.isempty() ) o = sl.remove(0); System.out.println( o ); public static void dostuff( GenericList<?> sl ) Object o = sl.head(); sl.append( o ); import lists.genericlist; import shapes.*; public class Demo5 public static void main( String argv[] ) GenericList<Circle> cl = new GenericList<Circle>(); GenericList<Rectangle> rl = new GenericList<Rectangle>(); public static void dostuff( GenericList<?> sl ) String o = sl.head(); sl.append( o ); // Do something useful dousefulshapestuff( cl ); dousefulshapestuff( rl ); public static void dousefulshapestuff( GenericList<?> sl ) // xxxxxxxx import lists.genericlist; import shapes.*; public class Demo5 public static void main( String argv[] ) GenericList<Circle> cl = new GenericList<Circle>(); GenericList<Rectangle> rl = new GenericList<Rectangle>(); import lists.genericlist; import shapes.*; public class Demo5 public static void main( String argv[] ) GenericList<Circle> cl = new GenericList<Circle>(); GenericList<Rectangle> rl = new GenericList<Rectangle>(); // Do something useful // Do something useful dousefulshapestuff( cl ); dousefulshapestuff( rl ); GenericList<String> sl = new GenericList<String>(); dousefulshapestuff( sl ); public static void dousefulshapestuff( GenericList<?> sl ) // xxxxxxxx dousefulshapestuff( cl ); dousefulshapestuff( rl ); GenericList<String> sl = new GenericList<String>(); dousefulshapestuff( sl ); public static void dousefulshapestuff( GenericList<? extends Shape > sl ) // xxxxxxxx

Generic arrays Det går även att begränsa en Generisk typ åt andra hållet Görs mha super TreeSet(Comparator<? super E> c)? svarar i detta fall mot en godtycklig superklass till E Java tillåter inte skapandet av arrayer av generisk typ Eg.: public class Stack<E> private E[] data =new E[10];... är ej tillåtet Lösningen: Skapa en array av objekts och typkonvertera denna public class Stack<E> private E[] data = (E[]) (new Object[10]);... Fast det genererar en varning från kompilatorn :-( Värt att veta Alla instanser av en generisk klass delar samma kod En del andra språk kompilerar upp en ny version av koden för varje instans av den generiska klassen (och ibland värre än så!!) Generics i Java 7 En ny Diamant operator List<String> list = new LinkedList<>(); I detta fall så kommer java att för konstruktorn göra ett antagande att det är LinkedList<String>(); som ska köras. Diamantoperatorn kan användas så länge som Java kan lista ut vilken typ som menas i sammanhanget. Följande funkar tex inte: List<String> list = new ArrayList<>(); list.add("a"); list.addall(new ArrayList<>()); Eftersom addall i detta fall förväntar sig en collection som innehåller en String eller en subklass till den (och inte kan avgöra typen). Klona ett objekt F11 Klona objekt Göra en kopia av ett objekt Definerat i Object protected Object clone() throws CloneNotSupportedException Kan behövas implementeras i din klass

Skapa en grund kopia Attribut av primitiv typ fixas automatiskt (av versionen av metoden i Object) Attributobjekt klonas inte (bara referensen dupliceras) I fallet nedan kommer klonade OtherClass-objekt dela på SomeClass objektet som var attribut Djup kopiering Klona även attributobjekt Attributobjekten måste även gå att klona public class OtherClass implements java.lang.cloneable private SomeClass sc; public class OtherClass implements java.lang.cloneable private SomeClass sc; public Object clone( ) throws java.lang.clonenotsupportedexception return super.clone(); public Object clone( ) throws java.lang.clonenotsupportedexception OtherClass x = (OtherClass) super.clone(); x.sc = (SomeClass) sc.clone(); return x; Djup kopiering Klona även attributobjekt Attributobjekten måste även gå att klona public class SomeClass implements java.lang.cloneable private ArrayList<Circles> circlelist; public Object clone( ) throws java.lang.clonenotsupportedexception SomeClass x = (SomeClass) super.clone(); x.circlelist = (ArrayList) circlelist.clone();???????? return x; Göra objekt klonbara Implementera java.lang.cloneable Undantaget java.lang.clonenotsupportedexception kastas om man anropar Object.clone() för ett objekt som inte implementerar Clonable-interfacet clone i Object är definierad protected men man brukar omdefiniera den med en public clone metod Klona attribut som är objekt Klona inte objekt som är immutable Anropa super.clone för att klona föräldraobjekts parametrar (och för att objects variant ska ta hand om primitiva typer och referenser)