Grundläggande termer… Några olika system

January 8, 2018 | Author: Anonymous | Category: Engineering & Technology, Datavetenskap, Java Programming
Share Embed Donate


Short Description

Download Grundläggande termer… Några olika system...

Description

Grundläggande termer… • Hålla koll på olika version, kunna gå tillbaka, etc. • Repo/Repository - förvaring/administrering av förändringar • Centraliserad/Decentraliserad

F11
 Grunderna i Versionshantering

• 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 Johan Eliasson

Git basic

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, … 384 • IntelliJ+Git, IntelliJ+ Mercurial,..

http://onlywei.github.io/explain-git-with-d3/#

http://marklodato.github.io/visual-git-guide/index-en.html Johan Eliasson

Git basic Git basic

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/# Johan Eliasson

Johan Eliasson

Git basic

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

Johan Eliasson

• 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

Johan Eliasson

Johan Eliasson

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?

Johan Eliasson

Johan Eliasson

Genrisk klass med Typ-parameter • Vill egentligen ha:

import java.util.Iterator; public class GenericList implements Iterable{

• Lista av heltal

private class Element implements Position{ private T value; private Element next;

• Lista av strängar • Lista av ...

public Element() { value=null;

Återanvända algoritmer för olika datatyper

next=null; } public Element(T value, Element next) { this.value=value; this.next=next; } } private class ListIterator implements Iterator { Element next; public ListIterator(Element first) { next=first; } @Override public boolean hasNext() { return next.next()!=null;

Jan Erik Moström

Jan Erik Moström

Genrisk metod med Typ-parameter

o1.insert(new Object(), o1.first()); String s=s1.inspect(s1.first());

static void fromArrayToCollection(T[] a, Collection c) { for (T o : a) { c.add(o); // Correct } }

public static void main(String[] args) { GenericList s1=new GenericList(); GenericList o1=s1; }

Type mismatch: cannot convert from GenericList to GenericList Jan Erik Moström

Johan Eliasson

Men kod som fungerar på alla generiska klasser?

Innan generics

• Till exempel skriva ut alla saker i listan

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" ); printStuff( l ); } public static void printStuff( List sl ) { Object o = null; while( !sl.isEmpty() ){ o = sl.remove(0); System.out.println( o ); } } }

Johan Eliasson

Johan Eliasson

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" ); printStuff( l ); }

public class Demo4b { public static void main( String argv[] ) { LinkedList l = new LinkedList(); l.add( "Hello" ); l.add( "World" ); printStuff( l ); }

public static void printStuff( List sl ) { Object o = null; while( !sl.isEmpty() ){ o = sl.remove(0); System.out.println( o ); } }

public static void printStuff( List sl ) { Object o = null; Demo4b.java:9: while( !sl.isEmpty() printStuff(java.util.List) ){ in o = sl.remove(0); Demo4b cannot be applied to System.out.println( (java.util.LinkedList) o ); } printStuff( l ); } ^ 1 error

}

}

Johan Eliasson

public static void doStuff( GenericList sl ) { Object o = sl.head(); sl.append( o ); }

Johan Eliasson

import lists.GenericList; import shapes.*; public class Demo5 { public static void main( String argv[] ) { GenericList cl = new GenericList(); GenericList rl = new GenericList(); // Do something useful doUsefulShapeStuff( cl ); doUsefulShapeStuff( rl );

public static void doStuff( GenericList sl ) { String o = sl.head(); sl.append( o ); }

} public static void doUsefulShapeStuff( GenericList sl ) { // xxxxxxxx } }

Johan Eliasson

import lists.GenericList; import shapes.*;

Johan Eliasson

import lists.GenericList; import shapes.*;

public class Demo5 { public static void main( String argv[] ) { GenericList cl = new GenericList(); GenericList rl = new GenericList();

public class Demo5 { public static void main( String argv[] ) { GenericList cl = new GenericList(); GenericList rl = new GenericList(); // Do something useful

// Do something useful

doUsefulShapeStuff( cl ); doUsefulShapeStuff( rl );

doUsefulShapeStuff( cl ); doUsefulShapeStuff( rl );

GenericList sl = new GenericList(); doUsefulShapeStuff( sl );

GenericList sl = new GenericList(); doUsefulShapeStuff( sl );

}

}

public static void doUsefulShapeStuff( GenericList< ? extends Shape > sl ) { // xxxxxxxx }

public static void doUsefulShapeStuff( GenericList sl ) { // xxxxxxxx }

}

}

Johan Eliasson

Johan Eliasson

Generic arrays • Det går även att begränsa en Generisk typ åt andra hållet

• Java tillåter inte skapandet av arrayer av generisk typ

• Görs mha super

• Eg.:

•TreeSet(Comparator
View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF