SlideShare une entreprise Scribd logo
1  sur  20
ООП
Поняття ООП

• Програма – це сукупність об’єктів
• Все є об’єктом
Об’єкт

• Об’єкт чітко характеризує себе
• Любий елемент програми можна
  представити як об’єкт
Клас

• Об’єкт – це екземпляр класа
• Клас – описує структуру і поведінку




class MyClass
    {
        // Methods
        // Properties
        // Fields
        // Delegates, …
    }
Основи ООП

•   Абстрагування
•   Інкапсуляція
•   Наслідування
•   Поліморфізм
Абстрагування

 • Підкреслення суттєвих деталей
 • Упущення несуттєвих


Суттєво                              Не суттєво
• Максимальна швидкість              • Оббивка салону
• Розхід палива                      • Панель приборів
• Ціна
Інкапсуляція

• Обєднання полів і методів
• Приховування реалізації
• Захист даних
Інкапсуляція

class Car
    {
        public float consumptionPerKm = 0.9f;

       public float AcessibleDistance(int fuelAmount)
       {
           return fuelAmount / consumptionPerKm;
       }
   }
Інкапсуляція

Модифікатори доступу:
• public
• protected
• private
• internal
• protected internal
Інкапсуляція
class Car
    {
        private float consumptionPerKm = 0.9f;
        private const float minConsumptionPerKm = 0.2f;

       public float AccessibleDistance(int fuelAmount)
       {
           return fuelAmount / consumptionPerKm;
       }

        public void SetConsumptionPerKm(float consumption)
        {
            consumptionPerKm = consumption > minConsumptionPerKm ?
consumption : minConsumptionPerKm;
        }
    }
Наслідування
Наслідування
class AutomaticCar: Car
    {
        public void EnableAutomatic(bool enable)
        {
            // additional changes

           SetConsumptionPerKm(enable ? 1.1f : 0.9f);
       }
   }
Інтерфейс
interface ICar
    {
        float AccessibleDistance(int fuelAmount);
        void Accelerate(int value);
        void Break(int value);
    }
Інтерфейс
class SimpleCar : ICar
    {
        public float AccessibleDistance(int fuelAmount)
        {
            return 0.0f;
        }

       public void Accelerate(int value)
       {
           //
       }

       public void Break(int value)
       {
           //
       }
   }
Віртуальні функції
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)
        {
            fuelAmount = fuelAmount / 2; // broken-down tractor

           return fuelAmount / consumptionPerKm;
       }
   }
Абстрактні класи і методи
abstract class NewPrototypeCar: Car
    {
        public abstract void HideLicensePlate();
    }




class BondCar : NewPrototypeCar
    {
        public override void HideLicensePlate()
        {
            //
        }
    }
Поліморфізм

• Один інтерфейс – багато реалізацій

 ICar car1 = new SimpleCar();
 ICar car2 = new SuperCar();

 car1.Accelerate(1);
 car2.Accelerate(1);
Поліморфізм
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() { }
}
#2 Об'єктно орієнтоване програмування (ч. 1)
#2 Об'єктно орієнтоване програмування (ч. 1)

Contenu connexe

Plus de Victor Matyushevskyy (15)

ASP.Net part 2
ASP.Net part 2ASP.Net part 2
ASP.Net part 2
 
Java script + extjs
Java script + extjsJava script + extjs
Java script + extjs
 
ASP.Net basics
ASP.Net basics ASP.Net basics
ASP.Net basics
 
Automated testing
Automated testingAutomated testing
Automated testing
 
Основи Баз даних та MS SQL Server
Основи Баз даних та MS SQL ServerОснови Баз даних та MS SQL Server
Основи Баз даних та MS SQL Server
 
Usability
UsabilityUsability
Usability
 
Windows forms
Windows formsWindows forms
Windows forms
 
Practices
PracticesPractices
Practices
 
06.1 .Net memory management
06.1 .Net memory management06.1 .Net memory management
06.1 .Net memory management
 
06 LINQ
06 LINQ06 LINQ
06 LINQ
 
05 functional programming
05 functional programming05 functional programming
05 functional programming
 
04 standard class library c#
04 standard class library c#04 standard class library c#
04 standard class library c#
 
#3 Об'єктно орієнтоване програмування (ч. 2)
#3 Об'єктно орієнтоване програмування (ч. 2)#3 Об'єктно орієнтоване програмування (ч. 2)
#3 Об'єктно орієнтоване програмування (ч. 2)
 
#1 C# basics
#1 C# basics#1 C# basics
#1 C# basics
 
#0 Вступна лекція
#0 Вступна лекція#0 Вступна лекція
#0 Вступна лекція
 

#2 Об'єктно орієнтоване програмування (ч. 1)