Объектно-ориентированный подход в языке C#. Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное.

Презентация:



Advertisements
Похожие презентации
Инкапсуляция полей и констант в языке C# (1) Поле: - инициализация факультативна, однако запрещен доступ к полям и методам того же типа; - поля структуры.
Advertisements

Классы в C# Ссылочный тип, определенный пользователем (аналогично языкам C++ и Java) Единичное наследование классов Множественное наследование интерфейсов.
Основы ООП и C# Работа с объектами и классами. Классы Класс специальный тип данных для описания объектов. Он определяет данные и поведение типа. Определение.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Лекция 4. Введение в С++ Наследование, множественное наследование. Конструкторы, деструкторы. Виртуальные функции.
Полиморфизм. Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Лекция 2: Описание класса 1. Поля 2. Методы 3. Конструкторы.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Сравнение реализаций пользовательских типов переменных в языках высокого уровня. typedef struct tagStack{ double data; struct tagStack* prev; }*stack;
Информационные технологии Стандартные библиотечные функции манипулирование данными преобразование и шифрование определение пользователями функций.
Множественное наследование class A {... }; class B {... }; class C : public A, protected B {... }; !!! Спецификатор доступа распространяется только на.
Конструкторы и Деструкторы Конструкторы - функции, явно предназначенные для инициализации объектов Деструкторы - функция обратная конструктору для обеспечения.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Прикладное программирование кафедра прикладной и компьютерной оптики Абстрактные типы данных.
Объектно-ориентированное программирование Парадигма программирования, основанная на представлении предметной области в виде взаимосвязанных абстрактных.
Наследование Полиморфизм ВЫЗОВ КОНСТРУКТОРОВ И ДЕСТРУКТОРОВ ПРИ НАСЛЕДОВАНИИ.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Классы в C#. Две роли классов Класс Класс – это модуль, архитектурная единица построения программной системы. Модульность построения – основное свойство.
Транксрипт:

Объектно-ориентированный подход в языке C#

Класс в языке C# - ссылочный тип, определенный пользователем. Для классов ЯП C# допустимо только единичное наследование. Реализация множественного наследования - посредством механизма интерфейсов. Членами (элементами) класса могут являться: константа, поле, метод, оператор, конструктор, деструктор; свойство, индексатор, событие; статические и инициализированные члены.

Доступ к членам класса определяется значениями модификатора области действия идентификатора класса: public, protected, private (по умолчанию), internal, protected internal. Инициализация объекта класса - оператором new.

Описание класса C : class C {... int value = 0;... } В описании класса могут присутствовать и другие поля (атрибуты объектов класса) допустимых в C# типов, а также методы (способы манипулирования объектами данного класса).

В C# инициализация поля (связывание его с начальным значением) не является обязательной. Для обеспечения безопасности программного кода и в силу реализации принципа инкапсуляции, инициализация поля некоторого класса C не должна открывать возможностей для доступа к полям и методам данного типа. При этом доступ к элементам класса внутри класса реализуется посредством обращения и не требует полного имени объекта:... value...

Доступ из сторонних классов требует указания полного имени объекта (инициализация и обращение): C c = new C();... c.value... Пример. Описание класса Rectangle, моделирующего прямоугольник с полями origin, width и height, моделирующими начальную точку, ширину и высоту, и методом MoveTo, моделирующим перемещение начальной точки в заданную:

class Rectangle { Point origin; public int width, height; public Rectangle() { origin = new Point(0,0); width=height=0; } public Rectangle (Point p, int w, int h) { origin = p; width = w; height = h; } public void MoveTo (Point p) { origin = p; } }

Пример использования класса Rectangle: Rectangle r = new Rectangle( new Point(10,20),5,5); int area = r.width * r.height; r.MoveTo(new Point(3,3)); инициализация объекта класса Rectangle с начальной точкой (10,20), шириной и высотой 5, подсчет его площади area, перемещение начала отсчета в точку с координатами (3,3).

Из примера: объект является динамическим и изменяет состояние в зависимости от соотнесения времени и внешних воздействий. Рассмотрим простейший, статический случай полей объекта, который в ЯП C# выделен в самостоятельный синтаксический элемент, характеризующийся независимостью от состояния объекта (и потому условно принадлежащий к классу).

Модифицированный пример класса для случая статических полей: class Rectangle { static Color defaultColor; // для каждого класса static readonly int scale; // для каждого класса int x, y, width,height; // для каждого объекта... }

Статические поля defaultColor и scale остаются неизменными внутри класса, а динамические поля x, y, width и height индивидуально изменяются в зависимости от состояния каждого из объектов класса. Доступ изнутри класса осуществляется посредством обращения:... defaultColor... scale... а из внешних классов - посредством обращения:... Rectangle.defaultColor... Rectangle.scale... с указанием полных имен объектов

Рассмотрели особенности реализации полей (как элементов классов с учетом динамики и статики их реализации). Рассмотрим способы манипулирования объектами классов – методов (функциями). Как и поля, методы описываются в блоке описания класса. Пример программы: описание класса C с полями sum и n и методами Add и Mean:

class C { int sum = 0, n = 0; public void Add (int x) { //процедура sum = sum + x; n++; } public float Mean() { //функция (возвращает значение) return(float)sum/n; }

Методы в ЯП C# делятся: -функции (обязаны возвращать значение) -процедуры (которые могут и не возвращать значения - тип void). В примере: Add - процедура, Mean – функция (возврат значения явно указывается оператором return).

Доступ к методу, как и к полю, можно получить изнутри класса: this.Add(3); float x = Mean(); и из других классов с явным указанием полного имени: C c = new C(); c.Add(3);float x = c.Mean(); Оператор this - указатель на текущий объект.

Реализация статических методов: class Rectangle { static Color defaultColor; public static void ResetColor() { defaultColor = Color.white; } метод ResetColor – статический (не возвращает значения, т.е. ResetColor - это статическая процедура).

Для доступа к статическому методу изнутри класса - указать краткое имя данного метода: ResetColor(); Для доступа из сторонних классов - указать полное имя статического метода: Rectangle.ResetColor();

Наследование свойств (полей и методов) классов объектов C# class Stack { int[ ] values; int top = 0; public Stack(int size){... } public void Push(int x){... } public int Pop(){... } }

В программе - описание класса, моделирующего стек массивом элементов values с вершиной top, функциями создания стека Stack размером size и "выталкивания" Push элемента x из стека, а также "вталкивания" Pop элемента в стек. Объекты классов (как динамические) хранятся в динамической области памяти ("куче"). В силу ограничений безопасности программного кода любой объект C# до использования необходимо инициализировать new: Stack s = new Stack(100); Наследование классами свойств других классов может быть единичным и множественным. Последнее реализуется посредством множественных интерфейсов (что приводит к множественному наследованию типов).

Достоинства и недостатки ОО подхода: Достоинства: возможность моделирования сложной предметной области, высокий уровень абстракции; событийно-ориентированный подход (динамика объектов и возможность манипулирования ими посредством методов приводят к управлению объектами посредством событий); интуитивную близость произвольной предметной области; возможность повторного использования описаний (основана на обращении к полям и методам извне описания классов, на использовании механизма наследования); параметризация методов обработки объектов (основана на использовании механизма интерфейсов). Недостатки - сложность тестирования и верификации программ.