Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

9. Interfaces. 2 Nordjyllands Erhvervakademi - 2009 Objectives “Good class design starts with good application design — how many classes, do they relate.

Lignende præsentationer


Præsentationer af emnet: "9. Interfaces. 2 Nordjyllands Erhvervakademi - 2009 Objectives “Good class design starts with good application design — how many classes, do they relate."— Præsentationens transcript:

1 9. Interfaces

2 2 Nordjyllands Erhvervakademi - 2009 Objectives “Good class design starts with good application design — how many classes, do they relate to one another, how decoupled do I want the system, etc. Inheritance and interfaces are the primary tools for going beyond basic class design into the realm of application design…” Interfaces Polymorfisk programmering Interface-baseret programmering

3 3 Nordjyllands Erhvervakademi - 2009 Part 1 Interfaces…

4 4 Nordjyllands Erhvervakademi - 2009 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 }

5 5 Nordjyllands Erhvervakademi - 2009 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

6 6 Nordjyllands Erhvervakademi - 2009 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

7 7 Nordjyllands Erhvervakademi - 2009 Polymorfisk programming Polymorphism: when the same operation is supported across different types. Eksempel: –klasser som arver en metode M fra en fælles basis klasse B –klasser som implementer et fælles interface I

8 8 Nordjyllands Erhvervakademi - 2009 Polymorfi gør det muligt at skrive generisk genbrugelig kode! Eksempel: –Følgende kode virker fuldt generisk! Alle datastrukturer i.NET implementer IEnumerator Alle objekter i.NET arver ToString() metoden IEnumerator iter; iter =...; iter.Reset(); while ( iter.MoveNext() ) MessageBox.Show( iter.Current.ToString() );

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

10 10 Nordjyllands Erhvervakademi - 2009 Part 2 Interface-baseret programmering…

11 11 Nordjyllands Erhvervakademi - 2009 Eksempel: sortering Mål: –skrive en generisk Sort() metode som den i System.Array

12 12 Nordjyllands Erhvervakademi - 2009 Step 1: definer interfacet 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); }

13 13 Nordjyllands Erhvervakademi - 2009 Step 2: 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

14 14 Nordjyllands Erhvervakademi - 2009 Step 3: 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 }

15 15 Nordjyllands Erhvervakademi - 2009 Step 4: 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);

16 16 Nordjyllands Erhvervakademi - 2009 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 "9. Interfaces. 2 Nordjyllands Erhvervakademi - 2009 Objectives “Good class design starts with good application design — how many classes, do they relate."

Lignende præsentationer


Annoncer fra Google