SlideShare a Scribd company logo
1 of 25
ООП
Програмування

•
•
•
•

“Лінійне”
“Процедурне”
“Модульне”
Об’єктне
Поняття ООП
• Програма – це сукупність об’єктів
• Все є об’єктом
Об’єкт
• Об’єкт чітко характеризує себе
• Любий елемент програми можна
представити як об’єкт
Клас
• Об’єкт – це екземпляр класа
• Клас – описує структуру і поведінку

class MyClass
{
// Methods
// Properties
// Fields
// Delegates, …
}

var myClass = new MyClass();
Клас
Основи ООП
•
•
•
•

Абстрагування
Інкапсуляція
Наслідування
Поліморфізм
Абстрагування
• Підкреслення суттєвих деталей
• Упущення несуттєвих

Суттєво
• Максимальна швидкість
• Розхід палива
• Ціна

Не суттєво
• Оббивка салону
• Колір стрілки
спідометра
Інкапсуляція
• Об’єднання полів і методів
• Приховування реалізації
• Захист даних
Інкапсуляція
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)
{
float realAmount = fuelAmount / 2.0f; // broken 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() { }
}
02 OOP
02 OOP

More Related Content

Viewers also liked

10 asp.net
10 asp.net 10 asp.net
10 asp.net eleksdev
 
11 web services
11 web services11 web services
11 web serviceseleksdev
 
07 Database Access
07 Database Access07 Database Access
07 Database Accesseleksdev
 
If unit2 summary
If unit2 summaryIf unit2 summary
If unit2 summaryeleksdev
 
Data Structures
Data StructuresData Structures
Data Structureseleksdev
 
Design patterns
Design patternsDesign patterns
Design patternseleksdev
 
#4 code quality
#4 code quality#4 code quality
#4 code qualityeleksdev
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basicseleksdev
 
Mvvw patterns
Mvvw patternsMvvw patterns
Mvvw patternseleksdev
 
sql introduction
sql introductionsql introduction
sql introductioneleksdev
 
cpp-2013 #11 Constness and Exceptions
cpp-2013 #11 Constness and Exceptionscpp-2013 #11 Constness and Exceptions
cpp-2013 #11 Constness and ExceptionsAmazon Web Services
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summaryeleksdev
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styleseleksdev
 
C++ Basics
C++ BasicsC++ Basics
C++ Basicseleksdev
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Roleeleksdev
 
Solid and ioc principles
Solid and ioc principlesSolid and ioc principles
Solid and ioc principleseleksdev
 

Viewers also liked (20)

10 asp.net
10 asp.net 10 asp.net
10 asp.net
 
11 web services
11 web services11 web services
11 web services
 
07 Database Access
07 Database Access07 Database Access
07 Database Access
 
If unit2 summary
If unit2 summaryIf unit2 summary
If unit2 summary
 
Data Structures
Data StructuresData Structures
Data Structures
 
Design patterns
Design patternsDesign patterns
Design patterns
 
#4 code quality
#4 code quality#4 code quality
#4 code quality
 
Rpc
RpcRpc
Rpc
 
NoSQL basics
NoSQL basicsNoSQL basics
NoSQL basics
 
Mvvw patterns
Mvvw patternsMvvw patterns
Mvvw patterns
 
sql introduction
sql introductionsql introduction
sql introduction
 
cpp-2013 #11 Constness and Exceptions
cpp-2013 #11 Constness and Exceptionscpp-2013 #11 Constness and Exceptions
cpp-2013 #11 Constness and Exceptions
 
Unit1 summary
Unit1 summaryUnit1 summary
Unit1 summary
 
Advanced styles
Advanced stylesAdvanced styles
Advanced styles
 
cpp-2013 #19 Concurrency
cpp-2013 #19 Concurrencycpp-2013 #19 Concurrency
cpp-2013 #19 Concurrency
 
cpp-2013 #13 C++11
cpp-2013 #13 C++11cpp-2013 #13 C++11
cpp-2013 #13 C++11
 
C++ Basics
C++ BasicsC++ Basics
C++ Basics
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
cpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basicscpp-2013 #3 OOP Basics
cpp-2013 #3 OOP Basics
 
Solid and ioc principles
Solid and ioc principlesSolid and ioc principles
Solid and ioc principles
 

More from eleksdev

Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practiceseleksdev
 
Communication in android
Communication in androidCommunication in android
Communication in androideleksdev
 
Hello android world
Hello android worldHello android world
Hello android worldeleksdev
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentationeleksdev
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors APIeleksdev
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basicseleksdev
 
Frontend basics
Frontend basicsFrontend basics
Frontend basicseleksdev
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 apieleksdev
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkpeleksdev
 
G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2eleksdev
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1eleksdev
 
Windows service
Windows serviceWindows service
Windows serviceeleksdev
 
Aspnet core
Aspnet coreAspnet core
Aspnet coreeleksdev
 
Web service lecture
Web service lectureWeb service lecture
Web service lectureeleksdev
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...eleksdev
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Roleeleksdev
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Roleeleksdev
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Roleeleksdev
 
Version control
Version controlVersion control
Version controleleksdev
 

More from eleksdev (20)

Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practices
 
Communication in android
Communication in androidCommunication in android
Communication in android
 
Hello android world
Hello android worldHello android world
Hello android world
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors API
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basics
 
Frontend basics
Frontend basicsFrontend basics
Frontend basics
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 api
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkp
 
G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2G rpc lection1_theory_bkp2
G rpc lection1_theory_bkp2
 
G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1
 
Windows service
Windows serviceWindows service
Windows service
 
DAL
DALDAL
DAL
 
Aspnet core
Aspnet coreAspnet core
Aspnet core
 
Web service lecture
Web service lectureWeb service lecture
Web service lecture
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Role
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Role
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Role
 
Version control
Version controlVersion control
Version control
 

02 OOP