Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.

Lignende præsentationer


Præsentationer af emnet: "Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns."— Præsentationens transcript:

1 Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns

2 Interfaces Et interface repræsenterer et design Eksempel: design af et objekt der kan iterere igennem en datastruktur interface = kun metode signaturer, ingen implementation! public interface IEnumerator { void Reset(); // reset iterator to beginning bool MoveNext(); // advance to next element object Current { get; } // retrieve current element }

3 Hvorfor bruge interfaces? Formalisere system design før implementation specielt nyttig ved store systemer Kontraktprogrammering interface repræsenterer kontrakten mellem bruger og objekt Lav kobling! en måde til at skrive generisk, genbrugelig client-side kode client-side kode virker på eksisterende og fremtidige objekter

4 Eksempel Følgende klient-side kode iteraterer gennem hvilken som helst datastruktur som understøtter IEnumerator: IEnumerator iter; iter =...; // get ref to iterator object iter.Reset(); while ( iter.MoveNext() ) MessageBox.Show( iter.Current.ToString() ); iterator data structure

5 Comparable interface Sortering forudsætter mulighed for at sammenligne objekter for at kunne ordne dem: returns < 0 if this object < obj parameter returns 0 if this object = obj parameter returns > 0 if this object > obj parameter public interface IComparable { int CompareTo(object obj); }

6 Klasser implementerer interfacet Objekter, der skal kunne sorteres skal implementere IComparable Eksempel: sort Student objekter med id public class Student : Person, IComparable { private int m_ID;. int IComparable.CompareTo(Object obj) { Student other; other = (Student) obj; return this.m_ID – other.m_ID; } base classinterface Student Person

7 Klienter programmerer iht. interfacet Sort antager at array elementerne implement IComparable: public class Array { public static void Sort(Array a) { IComparable icobj; for (int i = 0; i < a.Length-1; i++) { for (int j = i+1; j < a.Length; j++) { icobj = (IComparable) a.GetValue(i); if (icobj.CompareTo(a.GetValue(j)) > 0) swap(a, i, j); }//for }

8 Test! Exampel: sort et array af Student objekter Student[] students; students = new Student[n]; students[0] = new Student("jane doe", 22, 55630); students[1] = new Student("kim lee", 19, 81101); students[2] = new Student("jim bag", 28, 28254);. Array.Sort(students); foreach(Student s in students) MessageBox.Show(s.Name); Se eksempel: demos\ComparableStudentdemos\ComparableStudent

9 I.NET er interfaces kraftigt brugt IComparable ICloneable IDisposable IEnumerable & IEnumerator IList ISerializable IDBConnection, IDBCommand, IDataReader etc.

10 Nedarvning - abstract En klasse som indeholder en eller flere metoder som ikke er defineret kaldes abstrakt En abstrakt klasse bruges kun i forbindelse med arv, og kan ikke instantieres, dvs. der kan ikke oprettes objekter af en abstrakt klasse. En abstrakt metode skal redefineres i de(n) nedarvede klasse(r). En abstrakt metode definerer funktionalitet for alle arvinger (men implementerer ikke). En constructor i en abstrakt klasse bruges kun af arvingernes constructors

11 Fx: German Students Opgaver\ExerciseGermanStudents.pdf

12 Opsummering Arv er meget nyttigt men du har kun singlearv, så brug den rigtigt overvej det når klasse A “er-en" klasse B Interfaces er nyttige en klasse kan implementere et vilkårligt antal interfaces overvej det når klasse A interagerer med klasser B, C, D, … Mål: godt design polymorfisk programming


Download ppt "Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns."

Lignende præsentationer


Annoncer fra Google