Interface Snabba att implementera Programmera mot interface Bryter beroenden Gör det enklare att samarbeta Gör det enkelt att i ett senare skede byta ut implementationer mot effektivare Interface kan bryta beroendekedjor Skriv generell kod «Type» Interface metod1() Class2 Attributes metod1() Class2 Attributes metod2() Skriv alltid kod så att den använder sig av klasser/interface så högt upp i hierarkin som möjligt Ska ni bara göra saker som finns definierade i Figure-klassen så använd er då av en Figure-referens i stället för tex en mer specifik Triangle, så får ni mer generell kod movefigure(new Triangle()) void movefigure(figure f) f.movevertical(10); f.movehorizontal(10) Programexempel Referenshantering Tidskriftsartiklar och konferensartiklar Samma information till stor del
Text abstract public class private String ref; private String ref; private String published; public (String key) ref = key; public String key( ) return ref; public void title( String new ) ref = new; public String title( ) return ref; public void year( String new ) published = new; public String year( ) return published; return " = " + ref + "\når = " + published + "\n = " + ref; Text abstract public class Text extends private String the; private int pagestart, pageend; public void pages( int start, int end ) pagestart = start; pageend = end; public class extends Text private String journalname; public Text( String ID) super(id); public void author( String new ) the = new; public String author( ) return the; public int firstpage( ) return pagestart; public int lastpage( ) return pageend; return super.tostring() + "\n = " + the + "\npage start = " + pagestart + "\npage end = " + pageend; public ( String ID ) super(id); public void journal( String the ) journalname = the; public String journal( ) return journalname; return super.tostring() + "\n = " + journalname;
public class final static int LIBRARY_SIZE = 100; private ref[]; private int refcount = 0; public ( ) ref = new [LIBRARY_SIZE]; public boolean add( r ) for( int i = 0 ; i < refcount ; i++ ) if( ref[i].key() == r.key() ) return false; ref[refcount++] = r; return true; Inte bra public String tostring() String s=""; for(int i = 0 ; i < refcount; i++) s = s + ": " + ref[i].key() + " Titel: " + ref[i].title() + "\n"; abstract public class...! public boolean same( other )!! return ref.equals(other.ref);!... equals!!! return s; for( int i = 0 ; i < refcount ; i++ ) if( ref[i].same(r) ) return false; Text!! Text!! Text
«interface» Formatter start() end() field(string,string) public interface Formatter public void start(); Text public void end(); public void field( String fld, String value );.listfields public void export( Formatter format) for( int i = 0 ; i < refcount ; i++ ) format.start(); ref[i].listfields(format); format.end(); public void listfields( Formatter format ) format.field("name",journalname); super.listfields(format); Text.listFields public void listfields( Formatter format ) format.field("the",the); format.field("pagestart",string.valueof(pagestart)); format.field("pageend",string.valueof(pageend)); super.listfields(format); public class SimpleFormatter implements Formatter public void start( ) System.out.println( " ================= start =============="); public void end( ) System.out.println( " ================= slut ==============\n\n\n"); public void field( String fld, String value ) System.out.println(fld + " : " + value);
import Biblio.*; import java.lang.system; public class Demo public static void main( String[] args ) art = new ("anka:2000"); art.year("ca 2000"); art.title("vad kul detta är"); art.journal("disney's samlade verk"); art.author("kalle Anka"); art.pages(34,90); ip = new ("anka:2002"); ip.year("2002"); ip.title("ankeborgs ekonomi"); ip.author("kalle Anka"); ip.pages(12,78); ip.proceeding("ankornas Världskonferens"); lib = new (); if( lib.add(art) ) System.out.println("Kunde lägga till"); else System.out.println("Kunde inte lägga till"); if( lib.add(ip) ) System.out.println("Kunde lägga till"); else System.out.println("Kunde inte lägga till"); System.out.println(lib); lib.export(new SimpleFormatter());