1 objekter og klasser
TRANSCRIPT
• 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
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