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

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

on

  • 2,262 views

 

Statistics

Views

Total Views
2,262
Views on SlideShare
800
Embed Views
1,462

Actions

Likes
0
Downloads
8
Comments
0

2 Embeds 1,462

http://eleksdev.blogspot.com 1453
http://www.blogger.com 9

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • ООП
  • Поняття ООП• Програма – це сукупність об’єктів• Все є об’єктом
  • Об’єкт• Об’єкт чітко характеризує себе• Любий елемент програми можна представити як об’єкт
  • Клас• Об’єкт – це екземпляр класа• Клас – описує структуру і поведінку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() { }}