4. Об’єкт
• Об’єкт чітко характеризує себе
• Любий елемент програми можна
представити як об’єкт
5. Клас
• Об’єкт – це екземпляр класа
• Клас – описує структуру і поведінку
class MyClass
{
// Methods
// Properties
// Fields
// Delegates, …
}
var myClass = new MyClass();
8. Абстрагування
• Підкреслення суттєвих деталей
• Упущення несуттєвих
Суттєво
• Максимальна швидкість
• Розхід палива
• Ціна
Не суттєво
• Оббивка салону
• Колір стрілки
спідометра
18. Інтерфейс
class SimpleCar : ICar
{
public float AccessibleDistance(int fuelAmount)
{
return 0.0f;
}
public void Accelerate(int value)
{
//
}
public void Break(int value)
{
//
}
}
19. Віртуальні функції
class VirtualCar
{
protected const float consumptionPerKm = 0.6f;
public virtual float AccessibleDistance(int fuelAmount)
{
return fuelAmount / consumptionPerKm;
}
}
class Tractor : VirtualCar
{
public override float AccessibleDistance(int fuelAmount)
{
float realAmount = fuelAmount / 2.0f; // broken tractor
return fuelAmount / consumptionPerKm;
}
}
20. Абстрактні класи і методи
abstract class NewPrototypeCar: Car
{
public abstract void HideLicensePlate();
}
class BondCar: NewPrototypeCar
{
public override void HideLicensePlate()
{
//
}
}
21. Поліморфізм
• Один інтерфейс – багато реалізацій
ICar car1 = new SimpleCar();
ICar car2 = new SuperCar();
car1.Accelerate(1);
car2.Accelerate(1);
23. Поліморфізм
class A
{
public virtual void DoWork() { }
}
class B : A
{
public override void DoWork() { }
}
class C : B
{
public sealed override void DoWork() { }
}
class D : C
{
public new void DoWork() { }
}