SlideShare a Scribd company logo
.NET Framework & C#
Модуль 2. OOP
В цьому модулі:
 синтаксис оголошення класу;
 специфікатори доступу мови програмування C#;
 поля класу;
 методи класу;
 конструктори;
 ключове слово this;
 використання ref і out параметрів;
 методи зі змінною кількістю аргументів
 часткові типи (partial types)
2
Andrii Hladkyi
trilobt@gmail.com
Синтаксис оголошення класу
Класи C#, як й у С++ - це деякі шаблони, по яких ви
можете створювати об'єкти. Кожен об'єкт містять
дані й методи, що маніпулюють цими даними. Клас
визначає, які дані і яку функціональність може
мати кожен конкретний об'єкт (іноді називають
екземпляром) цього класу.
Andrii Hladkyi
trilobt@gmail.com 3
Синтаксис оголошення й ініціалізації
класу:
[специфікатор][модифікатор] Class <ім'я класу>
{
[специфікатор][модифікатор] тип <ім'я поля1>;
[специфікатор][модифікатор] тип <ім'я поля2>;
…
[специфікатор][модифікатор] тип <Метод1()>
{
...
}
[специфікатор][модифікатор] тип <Метод2()>
{
...
}
}
Andrii Hladkyi
trilobt@gmail.com 4
Andrii Hladkyi
trilobt@gmail.com 5
Демонстрація
Специфікатори доступу мови програмування C#
 private - дані доступні тільки методам усередині
класу й вкладених у нього класам
 protected - дані доступні тільки методам
усередині класу (і вкладеним у нього класам ) або
одному з його похідних класів
 internal - дані доступні тільки методам у зборці
 protected internal - дані доступні тільки методам
вкладеного або похідного типу класу й будь-яких
методів зборки
 public - дані доступні всім методам у всіх збірках
Andrii Hladkyi
trilobt@gmail.com 6
Andrii Hladkyi
trilobt@gmail.com 7
Демонстрація
Поля класу
Будь-який клас може містити в собі безліч даних. До таких
даних відносяться: константи, поля, конструктори екземплярів
класу, конструктори класу, методи, перевантажені оператори,
властивості, події, а також вкладені класи.
Поле - це змінна, яка зберігає значення будь-якого типу. При
оголошенні полів можуть указуватися наступні модифікатори:
• Якщо модифікатор не вказувати, то це означає, що поле
пов'язане з екземпляром класу, а не самим класом.
• Модифікатор static - означає, що поле є частиною класу, а не
об'єкта.
• Модифікатор readonly - означає, що поле буде
використовуватися тільки для читання, запис у полі
дозволяється тільки з коду методу конструктора або відразу
при оголошенні
Andrii Hladkyi
trilobt@gmail.com 8
Andrii Hladkyi
trilobt@gmail.com 9
Демонстрація
Якщо оголошується статичне поле, то воно належить
класу в цілому, а не конкретному об'єкту. І відповідно
одержати доступ до такого об'єкта можна тільки з-
під класу, використовуючи наступний синтаксис:
<Ім'я класу>.<ім'я поля>
Andrii Hladkyi
trilobt@gmail.com 10
Andrii Hladkyi
trilobt@gmail.com 11
Демонстрація
Методи класу
 Синтаксис оголошення:
[специфікатори][модифікатори] тип_повернення <Ім'я
Методу>([параметри])
{
// Тіло методу
}
Andrii Hladkyi
trilobt@gmail.com 12
 Передача параметрів
 Аргументи можуть передаватися методу або за значенням, або по
посиланню. Коли змінна передасться по посиланню, метод,що
викликається одержує саму змінну, тому будь-які зміни, які
здійснюються над змінною усередині методу, залишаться в силі
після його завершення.
 Ключове слово return
Коли зустрічається цей оператор відбувається вихід із метода. В методі
може зустрічатись декілька операторів return
 Перевантаження методів
Перевантаження методів - визначення декількох методів з однаковим
ім'ям і різною сигнатурою.
Andrii Hladkyi
trilobt@gmail.com 13
Andrii Hladkyi
trilobt@gmail.com 14
Демонстрація
Конструктори
 Конструктори - це методи класу, які викликаються при
створенні об'єкта. В C# конструкторів існує 4 види.
 Конструктор по замовчуванню – не приймає ніяких
параметрів й надається в «подарунок» при створенні класу.
Цей конструктор корисний тим, що він занулює всі числові
типи, установлює в false логічний, і в null – посилальний.
 Перевантажений конструктор – не приймає жодних
параметрів але ініціалізує поля класу.
 Конструктор з параметрами – конструктор, що може
приймати необхідну кількість параметрів для ініціалізації полів
класу або яких-небудь інших дій.
 Статичний конструктор – відноситься до класу, а не до
об'єкта. Існує для ініціалізації статичних полів класу.
Andrii Hladkyi
trilobt@gmail.com 15
Andrii Hladkyi
trilobt@gmail.com 16
Демонстрація
Використання ref й out параметрів
 Все, що передається в методи - передається за значенням. Для того,
щоб домогтися передачі параметрів через посилання існують
ключові слова ref й out
 Використання модифікатора ref
Ключовим словом ref позначаються ті параметри, які повинні
передаватися в метод по посиланню. Аргументи, які передаються в
метод із ключовим словом ref, обов'язково повинні бути
проініціалізовані, інакше компілятор видасть повідомлення про
помилку.
 Використання модифікатора out
Параметри, позначені ключовим словом out, також використовуються
для передачі по посиланню. Відмінність від ref полягає в тому, що
параметр вважається вихідним й відповідно компілятор дозволить не
ініціалізувати його до передачі в метод й простежить, щоб метод заніс у
цей параметр значення (інакше буде видане повідомлення про помилку).
Andrii Hladkyi
trilobt@gmail.com 17
Andrii Hladkyi
trilobt@gmail.com 18
Демонстрація
Ключове слово this
Вказівник this – вказівник на об’єкт, для якого був
викликаний не статичний метод. Ключове слово this
забезпечує доступ до поточного екземпляра класу.
Andrii Hladkyi
trilobt@gmail.com 19
Andrii Hladkyi
trilobt@gmail.com 20
Демонстрація
Створення методів зі змінною кількістю аргументів
Для створення методів зі змінною кількістю
аргументів було придумано ключове слово params,
яким позначають параметр методу. При
використанні цього ключового слова необхідно
враховувати, що параметр, який позначається
ключовим словом params: повинен стояти останнім у
списку параметрів; повинен указувати на
одновимірний масив будь-якого типу.
Andrii Hladkyi
trilobt@gmail.com 21
Andrii Hladkyi
trilobt@gmail.com 22
Демонстрація
Часткові типи (partial types)
Ключове слово partial говорить компіляторові С#, що
вихідний код класу може розташовуватися в
декількох файлах.
Andrii Hladkyi
trilobt@gmail.com 23
Придумати клас студента. І передбачити в
ньому наступні моменти: прізвище, ім'я, по
батькові, група, вік, вкладений масив оцінок по
програмуванню, адмініструванню й дизайну. А
також додати методи по роботі з
перерахованими даними: можливість
встановлення/одержання оцінки, одержання
середнього бала по заданому предметі,
роздруківка даних про студента.
Andrii Hladkyi
trilobt@gmail.com 24

More Related Content

What's hot

NET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorNET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage Collector
Andrii Hladkyi
 
Net framework і c# module 16
Net framework і c# module 16Net framework і c# module 16
Net framework і c# module 16
Andrii Hladkyi
 
Net framework і c# module 14
Net framework і c# module 14Net framework і c# module 14
Net framework і c# module 14
Andrii Hladkyi
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
Andrii Hladkyi
 
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsNET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, Events
Andrii Hladkyi
 
12 Architecture
12 Architecture12 Architecture
12 Architectureeleksdev
 
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
cit-cit
 
Net framework і c# module 4
Net framework і c# module 4Net framework і c# module 4
Net framework і c# module 4
Andrii Hladkyi
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3
eleksdev
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOPeleksdev
 
Advanced C#. Part 2
Advanced C#. Part 2Advanced C#. Part 2
Advanced C#. Part 2
eleksdev
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10
Andrii Hladkyi
 
Net framework і c# module 12
Net framework і c# module 12Net framework і c# module 12
Net framework і c# module 12
Andrii Hladkyi
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
eleksdev
 

What's hot (14)

NET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorNET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage Collector
 
Net framework і c# module 16
Net framework і c# module 16Net framework і c# module 16
Net framework і c# module 16
 
Net framework і c# module 14
Net framework і c# module 14Net framework і c# module 14
Net framework і c# module 14
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
 
NET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, EventsNET Framework and C# Module 6. Delegates, Events
NET Framework and C# Module 6. Delegates, Events
 
12 Architecture
12 Architecture12 Architecture
12 Architecture
 
лаб. роб. №2 обєкти та сервіси що ними надаються
лаб. роб. №2   обєкти та сервіси що ними надаютьсялаб. роб. №2   обєкти та сервіси що ними надаються
лаб. роб. №2 обєкти та сервіси що ними надаються
 
Net framework і c# module 4
Net framework і c# module 4Net framework і c# module 4
Net framework і c# module 4
 
Advanced c sharp part 3
Advanced c sharp part 3Advanced c sharp part 3
Advanced c sharp part 3
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOP
 
Advanced C#. Part 2
Advanced C#. Part 2Advanced C#. Part 2
Advanced C#. Part 2
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10
 
Net framework і c# module 12
Net framework і c# module 12Net framework і c# module 12
Net framework і c# module 12
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 

More from Andrii Hladkyi

Net Framework and c# Lesson 1
Net Framework and c# Lesson 1Net Framework and c# Lesson 1
Net Framework and c# Lesson 1
Andrii Hladkyi
 
Wpf module 2
Wpf module 2Wpf module 2
Wpf module 2
Andrii Hladkyi
 
Wpf module 1
Wpf module 1Wpf module 1
Wpf module 1
Andrii Hladkyi
 
Msp module 3
Msp module 3Msp module 3
Msp module 3
Andrii Hladkyi
 
Msp module 2
Msp module 2Msp module 2
Msp module 2
Andrii Hladkyi
 
Msp module 1
Msp module 1Msp module 1
Msp module 1
Andrii Hladkyi
 
Ado.net module 2
Ado.net module 2Ado.net module 2
Ado.net module 2
Andrii Hladkyi
 
Ado.net module 1
Ado.net module 1Ado.net module 1
Ado.net module 1
Andrii Hladkyi
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
Andrii Hladkyi
 
Win api module_2.0_gdi+
Win api module_2.0_gdi+Win api module_2.0_gdi+
Win api module_2.0_gdi+
Andrii Hladkyi
 
Win api module_1.1_ok
Win api module_1.1_okWin api module_1.1_ok
Win api module_1.1_ok
Andrii Hladkyi
 
Win api module_6.2
Win api module_6.2Win api module_6.2
Win api module_6.2
Andrii Hladkyi
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
Andrii Hladkyi
 
Net framework і c# lesson1
Net framework і c# lesson1Net framework і c# lesson1
Net framework і c# lesson1
Andrii Hladkyi
 
Uml module 6
Uml module 6Uml module 6
Uml module 6
Andrii Hladkyi
 
Uml module 5
Uml module 5Uml module 5
Uml module 5
Andrii Hladkyi
 
Uml module 4
Uml module 4Uml module 4
Uml module 4
Andrii Hladkyi
 
Uml module 3
Uml module 3Uml module 3
Uml module 3
Andrii Hladkyi
 
Uml module 2
Uml module 2Uml module 2
Uml module 2
Andrii Hladkyi
 
Uml module 1
Uml module 1Uml module 1
Uml module 1
Andrii Hladkyi
 

More from Andrii Hladkyi (20)

Net Framework and c# Lesson 1
Net Framework and c# Lesson 1Net Framework and c# Lesson 1
Net Framework and c# Lesson 1
 
Wpf module 2
Wpf module 2Wpf module 2
Wpf module 2
 
Wpf module 1
Wpf module 1Wpf module 1
Wpf module 1
 
Msp module 3
Msp module 3Msp module 3
Msp module 3
 
Msp module 2
Msp module 2Msp module 2
Msp module 2
 
Msp module 1
Msp module 1Msp module 1
Msp module 1
 
Ado.net module 2
Ado.net module 2Ado.net module 2
Ado.net module 2
 
Ado.net module 1
Ado.net module 1Ado.net module 1
Ado.net module 1
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Win api module_2.0_gdi+
Win api module_2.0_gdi+Win api module_2.0_gdi+
Win api module_2.0_gdi+
 
Win api module_1.1_ok
Win api module_1.1_okWin api module_1.1_ok
Win api module_1.1_ok
 
Win api module_6.2
Win api module_6.2Win api module_6.2
Win api module_6.2
 
Design pattern module 1
Design pattern module 1Design pattern module 1
Design pattern module 1
 
Net framework і c# lesson1
Net framework і c# lesson1Net framework і c# lesson1
Net framework і c# lesson1
 
Uml module 6
Uml module 6Uml module 6
Uml module 6
 
Uml module 5
Uml module 5Uml module 5
Uml module 5
 
Uml module 4
Uml module 4Uml module 4
Uml module 4
 
Uml module 3
Uml module 3Uml module 3
Uml module 3
 
Uml module 2
Uml module 2Uml module 2
Uml module 2
 
Uml module 1
Uml module 1Uml module 1
Uml module 1
 

Net Framework and c# module 2. OOP

  • 1. .NET Framework & C# Модуль 2. OOP
  • 2. В цьому модулі:  синтаксис оголошення класу;  специфікатори доступу мови програмування C#;  поля класу;  методи класу;  конструктори;  ключове слово this;  використання ref і out параметрів;  методи зі змінною кількістю аргументів  часткові типи (partial types) 2 Andrii Hladkyi trilobt@gmail.com
  • 3. Синтаксис оголошення класу Класи C#, як й у С++ - це деякі шаблони, по яких ви можете створювати об'єкти. Кожен об'єкт містять дані й методи, що маніпулюють цими даними. Клас визначає, які дані і яку функціональність може мати кожен конкретний об'єкт (іноді називають екземпляром) цього класу. Andrii Hladkyi trilobt@gmail.com 3
  • 4. Синтаксис оголошення й ініціалізації класу: [специфікатор][модифікатор] Class <ім'я класу> { [специфікатор][модифікатор] тип <ім'я поля1>; [специфікатор][модифікатор] тип <ім'я поля2>; … [специфікатор][модифікатор] тип <Метод1()> { ... } [специфікатор][модифікатор] тип <Метод2()> { ... } } Andrii Hladkyi trilobt@gmail.com 4
  • 6. Специфікатори доступу мови програмування C#  private - дані доступні тільки методам усередині класу й вкладених у нього класам  protected - дані доступні тільки методам усередині класу (і вкладеним у нього класам ) або одному з його похідних класів  internal - дані доступні тільки методам у зборці  protected internal - дані доступні тільки методам вкладеного або похідного типу класу й будь-яких методів зборки  public - дані доступні всім методам у всіх збірках Andrii Hladkyi trilobt@gmail.com 6
  • 8. Поля класу Будь-який клас може містити в собі безліч даних. До таких даних відносяться: константи, поля, конструктори екземплярів класу, конструктори класу, методи, перевантажені оператори, властивості, події, а також вкладені класи. Поле - це змінна, яка зберігає значення будь-якого типу. При оголошенні полів можуть указуватися наступні модифікатори: • Якщо модифікатор не вказувати, то це означає, що поле пов'язане з екземпляром класу, а не самим класом. • Модифікатор static - означає, що поле є частиною класу, а не об'єкта. • Модифікатор readonly - означає, що поле буде використовуватися тільки для читання, запис у полі дозволяється тільки з коду методу конструктора або відразу при оголошенні Andrii Hladkyi trilobt@gmail.com 8
  • 10. Якщо оголошується статичне поле, то воно належить класу в цілому, а не конкретному об'єкту. І відповідно одержати доступ до такого об'єкта можна тільки з- під класу, використовуючи наступний синтаксис: <Ім'я класу>.<ім'я поля> Andrii Hladkyi trilobt@gmail.com 10
  • 12. Методи класу  Синтаксис оголошення: [специфікатори][модифікатори] тип_повернення <Ім'я Методу>([параметри]) { // Тіло методу } Andrii Hladkyi trilobt@gmail.com 12
  • 13.  Передача параметрів  Аргументи можуть передаватися методу або за значенням, або по посиланню. Коли змінна передасться по посиланню, метод,що викликається одержує саму змінну, тому будь-які зміни, які здійснюються над змінною усередині методу, залишаться в силі після його завершення.  Ключове слово return Коли зустрічається цей оператор відбувається вихід із метода. В методі може зустрічатись декілька операторів return  Перевантаження методів Перевантаження методів - визначення декількох методів з однаковим ім'ям і різною сигнатурою. Andrii Hladkyi trilobt@gmail.com 13
  • 15. Конструктори  Конструктори - це методи класу, які викликаються при створенні об'єкта. В C# конструкторів існує 4 види.  Конструктор по замовчуванню – не приймає ніяких параметрів й надається в «подарунок» при створенні класу. Цей конструктор корисний тим, що він занулює всі числові типи, установлює в false логічний, і в null – посилальний.  Перевантажений конструктор – не приймає жодних параметрів але ініціалізує поля класу.  Конструктор з параметрами – конструктор, що може приймати необхідну кількість параметрів для ініціалізації полів класу або яких-небудь інших дій.  Статичний конструктор – відноситься до класу, а не до об'єкта. Існує для ініціалізації статичних полів класу. Andrii Hladkyi trilobt@gmail.com 15
  • 17. Використання ref й out параметрів  Все, що передається в методи - передається за значенням. Для того, щоб домогтися передачі параметрів через посилання існують ключові слова ref й out  Використання модифікатора ref Ключовим словом ref позначаються ті параметри, які повинні передаватися в метод по посиланню. Аргументи, які передаються в метод із ключовим словом ref, обов'язково повинні бути проініціалізовані, інакше компілятор видасть повідомлення про помилку.  Використання модифікатора out Параметри, позначені ключовим словом out, також використовуються для передачі по посиланню. Відмінність від ref полягає в тому, що параметр вважається вихідним й відповідно компілятор дозволить не ініціалізувати його до передачі в метод й простежить, щоб метод заніс у цей параметр значення (інакше буде видане повідомлення про помилку). Andrii Hladkyi trilobt@gmail.com 17
  • 19. Ключове слово this Вказівник this – вказівник на об’єкт, для якого був викликаний не статичний метод. Ключове слово this забезпечує доступ до поточного екземпляра класу. Andrii Hladkyi trilobt@gmail.com 19
  • 21. Створення методів зі змінною кількістю аргументів Для створення методів зі змінною кількістю аргументів було придумано ключове слово params, яким позначають параметр методу. При використанні цього ключового слова необхідно враховувати, що параметр, який позначається ключовим словом params: повинен стояти останнім у списку параметрів; повинен указувати на одновимірний масив будь-якого типу. Andrii Hladkyi trilobt@gmail.com 21
  • 23. Часткові типи (partial types) Ключове слово partial говорить компіляторові С#, що вихідний код класу може розташовуватися в декількох файлах. Andrii Hladkyi trilobt@gmail.com 23
  • 24. Придумати клас студента. І передбачити в ньому наступні моменти: прізвище, ім'я, по батькові, група, вік, вкладений масив оцінок по програмуванню, адмініструванню й дизайну. А також додати методи по роботі з перерахованими даними: можливість встановлення/одержання оцінки, одержання середнього бала по заданому предметі, роздруківка даних про студента. Andrii Hladkyi trilobt@gmail.com 24