Да си припомним: какво са класовете и обектите?


Когато връзката между два класа е композиция, класът, който логически е част от друг клас, е удобно да бъде деклариран като вътрешен клас



страница73/84
Дата03.01.2022
Размер0.54 Mb.
#112941
ТипПрограма
1   ...   69   70   71   72   73   74   75   76   ...   84
Класове
Свързани:
Изпитна тема1, Изпитна тема2
Когато връзката между два класа е композиция, класът, който логически е част от друг клас, е удобно да бъде деклариран като вътрешен клас.

Следователно, ако декларираме класа за кола Car, ще е подходящо да си създадем като вътрешен клас Engine, който ще отразява съответно концепцията за двигател на колата:

Car.cs

class Car

{

Door FrontRightDoor;



Door FrontLeftDoor;

Door RearRightDoor;

Door RearLeftDoor;

Engine engine;

 

public Car()



{

engine = new Engine();

engine.horsePower = 2000;

}

 



public class Engine

{

public int horsePower;



}

}


Декларация на изброен тип в клас

Преди да преминем към следващата тема за шаблонните типове (generics), трябва да отбележим, че понякога изброените типове се налага и могат да бъдат декларирани в рамките на даден клас с оглед на по-добрата капсулация на класа.

Например, изброеният тип CoffeeSize, който създадохме в предходната секция може да бъде деклариран вътре в тялото на класа Coffee, като по този начин се подобрява капсулацията:

Coffee.cs

class Coffee

{

// Enumeration



public static enum CoffeeSize

{

Small = 100, Normal = 150, Double = 300



}

 

// Instance variable



private CoffeeSize size;

 

public Coffee(CoffeeSize size)



{

this.size = size;

}

 

public CoffeeSize Size



{

get { return size; }

}

}


Съответно, методът за изчисляване на цената на едно кафе ще претърпи лека модификация:

public double CalcPrice(Coffee.CoffeeSize coffeeSize)

{

switch (coffeeSize)



{

case Coffee.CoffeeSize.Small:

return 0.20;

 

case Coffee.CoffeeSize.Normal:



return 0.40;

 

case Coffee.CoffeeSize.Double:



return 0.60;

 

default:



throw new InvalidOperationException(

"Unsupported coffee quantity: " + ((int)coffeeSize));

}

}


Шаблонни типове и типизиране (generics)

В тази секция ще обясним концепцията за типизиране на класове. Преди да започнем, обаче, нека разгледаме един пример, който ще ни помогне за разберем по-лесно идеята.

Приют за бездомни животни – пример

Нека имаме два класа. Нека класът Dog описва куче:





Сподели с приятели:
1   ...   69   70   71   72   73   74   75   76   ...   84




©obuch.info 2024
отнасят до администрацията

    Начална страница