1 Objekter og Klasser

16
Objekter og klasser Jeanette Nielsen dm67

Transcript of 1 Objekter og Klasser

Objekter og klasser

Jeanette Nielsen dm67

• Hvad er en klasse?• Hvad er et objekt?

C# eksempel

• Hvad indeholder en klasse?

class MyClass{

fieldspropertiesconstructormethods

}

• FieldsAccessSpecifier Type _name;

private int _myField;// readonly -writeonly –const

• Properties – (set og get)

public int MinVariabel { get { return _minVariabel;} set { _minVariabel = value; }}

• Constructor– new MyClass();

Default: AccessSpecifier ClassName(){}

Custom: AccessSpecifier ClassName(Type parameter, …){ // interesting code here}

public MyClass(int myVariabel) {

this._myVariabel = myVariable; }

• MethodsAccessSpecifier return-type MethodName(Type

parameter1, Type parameter2, …) {}

private int Add( int x, int y) {

return x+y;}

// ref – fulde rettigheder , out - manipulere

Arv

• Superklasse (base), subklasser• Alle klasser i c# arver fra System.Object

(equals, Finalize, GetHashCode, ToString)• Arver metoder og variabler• Multipel arv (ikke i c#)• Mutipel Interface arv

public class NewClass : MyClass, IMyInterface {…}

Værd at vide om arv

• Constructor – Kan kalde base constructor - :base (parametere her)

• AccessSpecifier – protected – KUN Børn kan se

• Metoder– Virtuel – Børn KAN override + mulighed for at kalde base klassen

implementation: base.MetodeNavn();

– Abstract – Børn SKAL override– Shadowing – kan ’semi-override’ ikke virtuelle

metoder, new keyword

Polymorfi

• Elementer af base klassen kan behandles ens• Dynamic Binding• Substitution

Abstrakte klasser og metoder

• Abstrakte klasser er ’tomme’, der kan ikke laves objekter af dem.

• Interface– Definer en samling abstrakte properties og/eller metoder– Abstrakte metoder er ’tomme’

public interface IMyInterface {

void printSomething();}

Design pattern

• En generel løsning på et hyppigt forekommende problem

• EX:– Singleton– Composite– State– Observer– Proxy

Singleton pattern• Problem: Der skal kun oprettes et objekt af klassen

• klassen har privat constructor og opretter et instance af sig selvpublic class Ctr{

private static Ctr instance = new Ctr();private Ctr() {}public static MovieCtr GetInstance(){

return instance;}

}

Composite pattern

• Problem: skel mellem containeren og objekterne som den indeholder gør det svært at kalde metoder i en træstruktur

State pattern

Observer pattern

Proxy Pattern