1 / 37

Introduktion

Introduktion. Om kursen Repetition -Klasser, metoder, objekt och referensvariabler, -Arv och generics types -Arrayer och arrayer av objekt . -Collection ramverket -Iteratorer -Exceptions (undantag) Kap 1-4 och 6.1-6.3. Vad handlar kursen om.

mahdis
Download Presentation

Introduktion

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduktion • Om kursen • Repetition • -Klasser, metoder, objekt och referensvariabler, • -Arv och generics types • -Arrayer och arrayer av objekt . • -Collection ramverket • -Iteratorer • -Exceptions (undantag) • Kap 1-4 och 6.1-6.3

  2. Vad handlar kursen om • Datastruktur- ett sätt att organisera data så att exekveringstiden för dina program blir bäst möjligt Ex: arrayer, listor, stack, träd • Kända tillämpningar Ex: räknemaskinner, kompilatorer stack träd

  3. Vad handlar kursen om? • Algoritm - metod för att stegvis lösa ett problem Ex. Algoritm för effektiv sökning och sortering av data. • Algoritm analys, tids komplexitet- hur olika implementationer påverkar exekveringstiden för en algoritm T(n) Exekveringstiden representeras som funktioner n

  4. Kurslitteratur och webbsida www2.hh.se/staff/nina

  5. Java program består av objekt • Attributes • Color • Manufactured • Model • Horse powers • Methods • Start() • Stop() • Accelerate() • Break() • Turn() • Attributes • Age • Length • Hair • BMI (?) • Methods • OpenEyes() • Walk() • Run() • Sleep()

  6. Object-Oriented Programming • Klasser är ”templates” som beskriver hur objekt ska designas in termer av egenskap, metoder och konstruktor. • Objekt är instances av objektet • Radius = 5 • Color = Green • Density = Soft • Attributes • Radius • Color • Density • Radius = 10 • Color = Blue • Density = Hard

  7. Objektorienterad mekanismen • Som OO språk har java stöd för följande • Inheritance(Arv) En klass kan ärva från en annan och utvidga dennes funktionalitet • Overloading Subklasser kan överskriva metoder från superklaser och ge dessa ny mening. • Interfaces En eller flera tomma metoder som måste inplementeras av klasserna som implementerar interfacen. • Abstract classesKlasser som innehåller tomma metoder och som måste implementeras vid arv.

  8. Ett “point-objekt” • Attributes • x_pos • y_pos En klass är en beskrivning av ett objekt public class Point { private int x; private int y; public Point(int ix,int iy) { x=ix; y=iy; } public int getX() { return x; } public int getY() { return y; } ............... } class Program { public static void main(String[] args) { Point p1=new Point (3,4); Point p2=new Point(7,9); System.out.println(p1.getX()); } }

  9. Objekt och referenser x:3 y:4 x:7 y:8 p2 p1 1000 Vad händer om man gör : p2=p1 ?

  10. Att jämföra objekt eller referenser x:3 y:4 x:3 y:4 p1 p2 Vad blir uttrycket ? if(p1==p2)

  11. Att jämföra objekt Om två objekt ska kunna jämföras måste de ha en metod som ”gör detta”. class Point{ private int x; private int y; public boolean equals (Point p) { if( p.getX()==x && p.getY()==y) return true; else return false; } // andra metoder } class Program { public static void main(String[] args) { Point p1=new Point (3,4); Point p2=new Point(7,8); System.out.println(p1.equals(p2)); } }

  12. Arv och polymorphism class Person { } private String name; ................................ public Person( String n){ name=n; } public String toString(){ return ”The name is ”+ name; }

  13. Super klass och subklass, this och super class Student extends Person{ } private int credits; public Student (int c, String n){ super(n); credits=c; } public String toString( ){ return super.toString()+ ” ” + credits } public void addCredits(int x) { this.credits+=x;}

  14. Polymorphiska typer och metod bindning Person Person p1=new Person(” Kale Svensson”); Student s1= new Student (0, ” Tina Nordlund”); Student Person p2= new Student ( 0, ” Tina Nordlund”); p2.toString() ?? p2.addCredits()??

  15. Supertyp och subtyp Object Vad blir utskriften ? System.out.println(o1.toString()); System.out.println(o2.toString()); Person Object o1= new Person (”Kalle Svensson”); Student Object o2= new Student (0, ”Anders T” );

  16. Interface public interface Movable { public void movHorisontal(int x); public void movVertical(int y); } En interface innehåller ofullständiga (abstracta) metoder.

  17. Interface Comparable • I java biblioteket finns interfacen Comparable som används för att definiera objekt som kan jämföras och rangordnas public interface Comparable { public int compareTo( Object other); }

  18. Interface och datatyp import java.util.*; class Point implements Comparable { private int x; private int y; // andra metoder public int compareTo(Object o) { Point p= (Point) o; // o måste omkastas till Point if(x>p.x) return 1; else if(x<p.x ) return -1; else return 0; } }

  19. Interfacen namn blir datatyp Comparable class Point impelements Comparable class Car implements Comparable Comparable obj1=new Point(3,4); Comparable obj2=new Car(”Volvo”,”Btj-835”);

  20. Klassen Object och Interface – är javas sätt att implementera ”generella” typer men.... class MyMethods { public void förvirra1( Object obj) { System.out.println(obj); } public void förvira2( Comparable obj1, Comparable obj2) { System.out.println(obj1.compareTo(obj2)); } }

  21. En abstrakt partikel… public abstract class Particle { protectedint xp, yp; protectedint xv, yv; public Particle(int start_xp, int start_yp) { xp = start_xp; yp = start_yp; xv = 0; yx = 0; } publicvoid setVelocity(int new_xv, int new_yv) { xv = new_xv; yv = new_yv; } public abstract void paint(Graphics g); }

  22. Och några konkreta partiklar… public class RoundParticle extends Particle { public RoundParticle(int start_xp, int start_yp) { super(start_xp, start_yp); } public void paint(Graphics g) { g.fillOval(xp, yp, 20, 20); } } public abstract class Particle { protectedint xp, yp; protectedint xv, yv; public Particle(int start_xp, int start_yp) { xp = start_xp; yp = start_yp; xv = 0; yx = 0; } publicvoid setVelocity(int new_xv, int new_yv) { xv = new_xv; yv = new_yv; } public abstract void paint(Graphics g); } public class SquareParticle extends Particle { public SquareParticle(int start_xp, int start_yp) { super(start_xp, start_yp); } public void paint(Graphics g) { g.fillRect(xp, yp, 20, 20); } }

  23. Datastrukturen array • Vi deklarerar arrayen och skapar array objekt int[] lista = new int[31]; length 0 0 0 0 0 0 0 0 [0] [1] [2] [3] ............. [27] [28] [29] [30] lista index

  24. Datastrukturen array • Detta fungerar inte, vi får två referenser till samma aray array1 array1 1 4 6 -2 1 4 6 -2 array2 7 14 -6 0 array2 7 14 -6 0 int[] array1 = {1, 4, 6, -2}; int[] array2 = {7, 14, -6, 0}; Efter tilldelning: array2 = array1;

  25. Arrayer som argument till metod class A { public static void förvirra( int [] a) { a[3]=7; a[4]=10; for(int i=0;i<a.length;i++) System.out.println(a[i]); } } class Program { public static void main(String[] args) { int [] array1={5,6,7,8,3,8,5}; A.förvirra(array1); for(int i=0;i<array1.length;i++) System.out.println(array[i]); } }

  26. Array av datatypen Object kan innehålla alla typer av objekt Object [] array=new Object [7] array[1]=new Person(..) array[2]=new Student(...)

  27. Generella typer i java 5.0 ArrayList lista <Item>=new ArrayList<Item>(5); Stack <Person> st=new Stack <Person>(10);

  28. Collections och iteratorer En datastruktur är: • data (representerad på olika sätt) • Metoder • Finns i java.util ..\..\..\..\jdk1.5.0\docs\index.html Collection- generell samling data List- ordnad samlig av data Set- ordnad samlig av data som inte får innehålla dubbleter Map- Samling av data i par ( objekt+ nyckel) Queue- samlig data som accesar efter en Bästämd ordning

  29. Iterator interface Ett Iterator-objekt har följande metoder public interface Iterator { public boolean hasNext(); public Object next(); public void remove(); }

  30. Vad är en iterator ? public class MyContainer{ Object [ ] items; int size; public void add( Object obj) { items[size]=obj; size++; } public Iterator iterator(){ return new MyIterator (this); } // andra metoder }

  31. Och MyIterator klassen alltså hasNext och next class MyIterator implements Iterator { private int current=0; private MyContainer container; public MyIterator( MyContainer c){ container=c; } public boolean hasNext(){ return curent<container.size; } public Object next(){ return container.items[current ]; current ++; } } Iterator-objektet innehåller den datastrukturen som skall itereras igenom

  32. Och så används ett Iterator- objekt ...main(...) { MyContainer v=new MyContainer(); v.add(”2”); v.add(”3”); Iterator itr= v.iterator(); while( itr.hasNext() ) System.out.println( itr.next() ); } Varför ”2” och inte 2 ??

  33. Run time fel hantering – Exception • Fel kan uppträdda under exekveringen av ett program när till exempel: • öppnar en fil som inte existerar • plocka det tjogonde elementet i en array med tio element • skriva till en fil som är skrivskyddad De fel kan inte upptäkas av kompilatorn, då måste programmet hantera de typen av fel.

  34. Exceptions == Undantag När man anropar en metod som kan generera undantag ska metodens anrop läggas i en try-catch block. ...main(..){ BufferedReader in=new BufferedReader( new InputStreamReader(System.in)) String text; try{ text=in.readLine(); // gör något med text } catch( IOException e ) { System.out.println(e); } }

  35. Implementera metoder som kastar undantag - throws static void printFile( String fName) throws IOException { // metoden låter ”anroparen” hantera undantaget } ..main(..) { try{ printFile( args[0]); } catch (IOException e){ System.out.println(e);} }

  36. Implementera metoder som genererar undantag- throw public static void divide( int tal1, int tal2) { if(tal2 ==0) throw new AritmeticExeption(” Divide by zero”); else tal1/tal2; }

  37. Skapa egna undantag klasser class MyException extends Exception { public MyException(String s) { super(s); } }

More Related