1 / 27

Классы в С #

Классы в С #. Понятие объекта. В реальном мире каждый предмет или процесс обладает набором статических и динамических характеристик (свойствами и поведением). Поведение объекта зависит от его состояния и внешних воздействий.

melosa
Download Presentation

Классы в С #

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Классыв С#

  2. Понятие объекта • В реальном мире каждый предмет или процесс обладает набором статических и динамических характеристик (свойствами и поведением). Поведение объекта зависит от его состояния и внешних воздействий. • Понятие объекта в программе совпадает с обыденным смыслом этого слова: объект представляется как совокупность данных, характеризующих его состояние, и функций их обработки, моделирующих его поведение. Вызов функции на выполнение часто называют посылкой сообщения объекту. • При создании объектно-ориентированной программы предметная область представляется в виде совокупности объектов. Выполнение программы состоит в том, что объекты обмениваются сообщениями.

  3. Абстрагирование и инкапсуляция • При представлении реального объекта с помощью программного необходимо выделить в первом его существенные особенности и игнорировать несущественные. Это называется абстрагированием. • Таким образом, программный объект — это абстракция. • Детали реализации объекта скрыты, он используется через его интерфейс — совокупность правил доступа. • Скрытие деталей реализации называется инкапсуляцией. Это позволяет представить программу в укрупненном виде — на уровне объектов и их взаимосвязей, а следовательно, управлять большим объемом информации. • Итак, объект — это инкапсулированная абстракция с четко определенным интерфейсом.

  4. Наследование • Важное значение имеет возможность многократного использования кода. Для объекта можно определить наследников, корректирующих или дополняющих его поведение. • Наследование применяется для: • исключения из программы повторяющихся фрагментов кода; • упрощения модификации программы; • упрощения создания новых программ на основе существующих. • Благодаря наследованию появляется возможность использовать объекты, исходный код которых недоступен, но в которые требуется внести изменения. • Наследование позволяет создавать иерархии объектов. Иерархия представляется в виде дерева, в котором более общие объекты располагаются ближе к корню, а более специализированные — на ветвях и листьях.

  5. Полиморфизм • ООП позволяет писать гибкие, расширяемые и читабельные программы. • Во многом это обеспечивается благодаря полиморфизму, под которым понимается возможность во время выполнения программы с помощью одного и того же имени выполнять разные действия или обращаться к объектам разного типа. • Чаще всего понятие полиморфизма связывают с механизмом виртуальных методов.

  6. Достоинства ООП • использование при программировании понятий, близких к предметной области; • возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программы; • возможность многократного использования кода за счет наследования; • сравнительно простая возможность модификации программ; • возможность создания и использования библиотек объектов.

  7. Недостатки ООП • некоторое снижение быстродействия программы, связанное с использованием виртуальных методов; • идеи ООП не просты для понимания и в особенности для практического использования; • для эффективного использования существующих объектно-ориентированных систем требуется большой объем первоначальных знаний; • неграмотное применение ООП может привести к значительному ухудшению характеристик разрабатываемой программы.

  8. Основные определения • Классом называется весьма общая сущность, которая может быть определена как совокупность элементов. • Свойством (или атрибутом) называется пропозициональная функция, определенная на произвольном типе (данных). • Методом (или функцией) называется операция, определенная над объектами некоторого класса.

  9. Жизненный цикл класса • описание класса как типа данных; • объявление объектных переменных (экземпляров класса, объектов); • создание и инициализация объектов; • выполнение необходимых операций с объектными переменными в программе; • уничтожение ненужных объектных переменных

  10. Диаграмма класса

  11. Состав класса • константы; • поля; • методы; • свойства; • конструкторы; • деструкторы; • индексаторы (обеспечивают доступ к элементам класса по их порядковым номерам); • обработчики событий.

  12. Формат объявления класса атрибуты спецификаторыclass :список классов-предков { Описания констант; Описания полей; Описания методов; Описания свойств; Описания конструкторов; Описания деструкторов; Описания индексаторов; Описания обработчиков событий } Простейший пример описания: class C1 {} // пустой класс

  13. Примеры спецификаторов

  14. Элементы класса • Методы определяют поведение класса. Каждый метод класса должен решать только одну задачу. • Создание любого метода следует начинать с его интерфейса (заголовка). Необходимо четко представлять себе, какие параметры метод должен получать и какие результаты формировать. Входные параметры обычно перечисляют в начале списка параметров. • Поля, характеризующие класс в целом, следует описывать как статические. • Все литералы, связанные с классом, описываются как поля-константы с именами, отражающими их смысл. • Необходимо стремиться к максимальному сокращению области действия каждой переменной. Это упрощает отладку программы, поскольку ограничивает область поиска ошибки.

  15. Описания констант атрибуты спецификаторыconstтип имя = начальное значение; Примеры описания констант: static const int n =0; double const g =9.81; Примеры использования констант: int [] p = new int[n]; y = g*t*t/2.0;

  16. Описания полей атрибуты спецификаторытип имя; Примеры описания полей: static int r; public int x; Пример использования полей: A.r = b.x;

  17. Спецификаторы полей и констант класса

  18. Описания методов Методы бывают: • Типизированные; • Нетипизированные. Формат описания типизированных методов имеет вид: Модификатор_доступа тип_результата имя_метода(список параметров) { Объявления переменных Инструкции Return выражение }

  19. Пример описания типизированного метода Пример описания типизированного метода: public float tsr() { float s = 0; float sr; for (int i = 0; i < 7; i++) { s += Convert.ToSingle(a[i]); } sr = s / 7; return sr; } Примеры вызова на исполнение типизированного метода: Console.WriteLine("Средняя температура: sr= " + m.tsr()); y = m.tsr();

  20. Формат описания нетипизированных методов Модификатор_доступа void имя_метода(список параметров) { Объявления переменных Инструкции } Пример описания нетипизированного метода: public void tmax() { for (int i = 0; i < 7; i++) { if (a[i] > max) { max = a[i]; nmax = i; } Примеры вызова на исполнение нетипизированного метода: m.tmax();

  21. Типы параметров В С# четыре типа параметров: • параметры-значения - для исходных данных метода; • параметры-ссылки (ref) - для изменения аргумента; • выходные параметры (out) – для формирования аргумента; • параметры-массивы (params) – для переменного кол-ва аргументов. Пример: public int Calculate( int a, ref int b, out int c, params int[] d ) { … }

  22. Свойства атрибуты спецификаторы типИмя_свойства { get {код доступа returnИмя_свойства;} set {код доступа;} } Пример описания свойства: int x; // описываем поле x publicintX // описываем свойство X для поля x { get { return x; } set { x = value; } } Примеры обращения к полю x объекта a с использованием свойства X: a.X = 5; y = a.X;

  23. Конструкторы • Конструктор – это специализированный метод, предназначенный для создания и инициализации объектов. Конструктор вызывается на исполнение с помощью инструкции new и имени класса. Свойства конструкторов: • Имя конструктора всегда такое же, как и имя соответствующего ему класса. • Конструктор, не имеющий параметров, называется конструктором по умолчанию. При вызове такого конструктора значимым полям создаваемого объекта автоматически присваиваются нулевые значения, а ссылочным полям – значение null. • При выполнении конструктор не возвращает в программу никаких значений. • Класс может иметь несколько конструкторов с разными наборами параметров инициализации.

  24. Пример конструктора using System;using System.Collections.Generic; using System.Text; class Point // классТочка { // ----- поля класса public int x; public int y; // ------ конструктор класса public Point(int x1, int y1) {x = x1;y = y1; } }

  25. Деструкторы • Деструктор – это специальный вид метода для высвобождения памяти, занимаемой неиспользуемыми объектами (уничтожение неиспользуемых объектов). • Отличие в описании деструктора от конструктора состоит в том, что в деструкторе перед именем класса ставится значок тильда (~). В теле деструктора обычно описываются дополнительные действия, выполняемые в ходе удаления неиспользуемых объектов из памяти.

  26. Производные классы Пример описания производного класса C2 на основе базового класса C1: public class C1 { Описание элементов класса C1 } // ----- Описание класса C2 – производного от класса C1. public class C2 : C1 { Описание элементов класса C2 }

  27. Пример явного вызова конструктора базового класса в конструкторе производного класса: public class C1 { public int x1; public C1( int p1) //Конструктор класса C1 { this.x1=p; } } // ------- Описание класса C2 – производного от класса C1 public class C2: C1 { public int x2; // Конструктор класса C2 вызывает конструктор базового класса C1 base () public C2(int p1, int p2): base(p1) { this.x2=p2; } }

More Related