1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon
2 Oppgave L_06_02 main Lag et program i Java som adderer to polynomer og deretter deriverer resultatet. Klassehierarki Javadokumentasjon
3 Valg av datastruktur -Bør velge en hensiktsmessig datastruktur. -Polynomledd kan sorteres etter stigende eksponent. To polynomer kan enklest adderes når begge polynomene er sortert. Velger å representere polynomer vha en sortert liste. Kan da velge sortert liste som sortert array eller sortert lenket liste. Klassehierarki Javadokumentasjon
4 Ordnede lister / Sorterte lister OrderedList:Listestruktur hvor rekkefølgen har betydning Eks:Innholdsfortegnelse i en bok SortedList:Listestruktur sortert på en nøkkel Eks:Stikkordregister i en bok Klassehierarki Javadokumentasjon
5 A_Object I_Comparable I_OrderedList / I_SortedList I_Container A_Container I_SearchableContainer I_OrderedList I_SortedList A_SearchableContainer OrderedListAsArrayOrderedListAsLinkedList SortedListAsArraySortedListAsLinkedList Klassehierarki Javadokumentasjon
6 Polynomer Et n-te ordens polynom i x: FaktorEksponent Klassehierarki Javadokumentasjon
7 Polynomer Alternativ representasjon Et n-te ordens polynom i x: Alternativ representasjon av polynomer: En sekvens av ordnede tall-par: Klassehierarki Javadokumentasjon
8 Polynomer Addisjon - Derivasjon Klassehierarki Javadokumentasjon
9 Polynomer Klasser:PTerm - PolynomialAsSortedList PTerm PolynomialAsSortedList Klassehierarki Javadokumentasjon
10 Klassen PTerm coefficient exponent getCoefficient getExponent plus differentiate compareTo PTerm Klassehierarki Javadokumentasjon
11 Interface I_Polynomial add plus differentiate I_Polynomial Klassehierarki Javadokumentasjon
12 Klassen PolynomialAsSortedList SortedListAsLinkedList list getList add plus differentiate PolynomialAsSortedList DList list insert SortedListAsLinkedList add plus differentiate I_Polynomial DList list getList insert find remove accept getEnumeration … OrderedListAsLinkedList … … DList Klassehierarki Javadokumentasjon
13 PTerm plus coefficient exponent public PTerm plus (PTerm arg) { if (exponent == arg.exponent) return new PTerm(coefficient + arg.coefficient,exponent) } PTerm Klassehierarki Javadokumentasjon
14 PTerm differentiate coefficient exponent public void differentiate ( ) { if (exponent > 0) coefficient =exponent * coefficient exponent =exponent - 1 else coefficient= 0 } PTerm Klassehierarki Javadokumentasjon
15 PTerm compareTo coefficient exponent public int compareTo (I_Comparable obj) { PTerm pTerm = (PTerm)obj if (exponent == pTerm.exponent) if (coefficient < pTerm.coefficient) return -1; else if (coefficient > pTerm.coefficient) return 1 else return 0 else return exponent - pTerm.exponent } PTerm Klassehierarki Javadokumentasjon
16 Klassen PolynomialAsSortedList add SortedListAsLinkedList list public void add (PTerm pTerm) { list.insert(pTerm) } PolynomialAsSortedList Klassehierarki Javadokumentasjon
17 Klassen PolynomialAsSortedList plus [1/2] SortedListAsLinkedList list public I_Polynomial add (I_Polynomial poly) { while p1 and p2 has more elements { add polynomial } while p1 has more elements { add polynomial } while p2 has more elements { add polynomial } PolynomialAsSortedList Klassehierarki Javadokumentasjon
18 Klassen PolynomialAsSortedList plus [2/2] SortedListAsLinkedList list public I_Polynomial add (I_Polynomial poly) { while p1 and p2 has more elements { add term fra p1 og/eller p2 } while p1 has more elements { add term fra p1 } while p2 has more elements { add term fra p2 } PolynomialAsSortedList Klassehierarki Javadokumentasjon
19 Klassen PolynomialAsSortedList differentiate 1 SortedListAsLinkedList list public void differentiate ( ) { list.accept (new Visitor_Differentiate_PTerm) I_Comparable zeroPTerm = list.find (new PTerm(0,0)) if (zeroPTerm != null) list.remove(zeroPTerm) } PolynomialAsSortedList Klassehierarki Javadokumentasjon
20 Klassen PolynomialAsSortedList Klassen Visitor_Differentiate_PTerm public class Visitor_Differentiate_PTermextendsA_Visitor{ public void visit (Object obj){ if obj != null ((PTerm)obj).differentiate( ); } Klassehierarki Javadokumentasjon
21 Klassen PolynomialAsSortedList differentiate 2 SortedListAsLinkedList list public void differentiate ( ) { I_Visitor visitor = new A_Visitor( ) { public void visit (Object) { ((PTerm)obj).differentiate( ) } list.accept (visitor) I_Comparable zeroPTerm = list.find (new PTerm(0,0)) if (zeroPTerm != null) list.remove(zeroPTerm) } PolynomialAsSortedList Klassehierarki Javadokumentasjon
22 I_OrderedList Forord Innledning DataTyper..
23 I_SortedList Alfsen Nilsen Olsen..
24 I_Cursor En cursor er et objekt som husker posisjonen til et gitt objekt i en liste og som samtidig kan benyttes til ulike operasjoner knyttet til denne posisjons-opplysningen... cursor
25 JBuilder 7 1.Adder DataStructures til JBuilder(utføres kun en gang) 2.Opprett et nytt prosjekt (new project) 3.Opprett nødvendige klasser (new class)
26 ENDEND