- •1. Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки
- •2.Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.
- •4.Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.
- •5.Объекты и их жизненный цикл. Создание и уничтожение объектов.
- •6.Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения
- •7 Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.
- •8.Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.
- •9.Наследование. Функциональное назначение. Реализация. Примеры применения.
- •10.Наследование. Конструктор по умолчанию. Назначение.
- •11. Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.
- •12.Полиморфизм. Функциональное назначение. Способы реализации. Примеры применения.
- •13.Перегрузка методов. Функциональное назначение. Способ реализации. Примеры применения.
- •14.Виртуальные методы. Функциональное назначение. Примеры применения.
- •15.Перегрузка операций. Функциональное назначение. Способ реализации. Примеры применения.
- •17.Исключительные ситуации. Понятие. Способы обработки исключительных ситуаций. Примеры применения.
- •18.Интерфейсы. Функциональное назначение. Иерархия интерфейсов. Множественное наследование: проблемы и способы их разрешения.
- •Концепция типа данных. Встроенные типы данных и их реализация в языке с#
- •2. Концепция типа данных. Соглашения о совместимости и приведение типов
- •4. Концепция типа данных. Символьные типы данных.
- •5. Концепция типа данных. Составные типы данных. Массивы и их реализация в с#. Структуры.
- •7. Концепция типа данных. Определение собственных типов данных.
- •8. Концепция типа данных. Значащие (размерные) (Value type) и ссылочные (Reference type) типы данных. Упаковка и распаковка (Boxing, Unboxing).
- •9. Концепция типа данных. Переменные и константы и их реализация в с#.
- •10. Принцип модульности программ. Глобальные и локальные имена. Область видимости имен. Выбор области видимости.
- •12. Унарные и мультипликативные операции. Примеры применений.
- •13. Аддитивные и сдвиговые операции. Примеры применений.
- •11. Принцип модульности программ. Метод, как отдельный модуль программы. Интерфейсная и скрытая часть метода. Формальные и фактические параметры метода. Примеры применения.
- •14. Операции отношения и действий над типами данных. Примеры применений.
- •15. Логические операции. Примеры применений.
- •17. Операторы перехода и оператор присваивания.
- •16. Организация циклов в с#. Примеры применений.
- •18. Операторы условного перехода. Примеры применений.
2.Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.
2. Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство
Класс — это шаблон, который определяет форму объекта. Он задает как данные, так и код, который оперирует этими данными. Объекты — это экземпляры класса. Класс — это логическая абстракция. О ее реализации нет смысла говорить до тех пор, пока не создан объект класса, и в памяти не появилось физическое его представление. Данные содержатся в переменных экземпляров, а код — в методах. Класс определяет также ряд специальных членов данных и методов-членов, например статические переменные, константы, конструкторы, деструкторы, индексаторы, события, операторы и свойства.
Объявление объекта типа Building:
Building house = new Building();
Это объявление выполняет две функции. Во-первых, оно объявляет переменную с именем house классового типа Building. Но эта переменная не определяет объект, а может лишь ссылаться на него. Во-вторых, рассматриваемое объявление создает реальную физическую копию объекта и присваивает переменной house ссылку на этот объект. И все это — "дело рук" оператора new. Таким образом, после выполнения приведенной выше строки кода переменная house будет ссылаться на объект типа Building.
Оператор new динамически (т.е. во время выполнения программы) выделяет память для объекта и возвращает ссылку на него. Эта ссылка (сохраненная в конкретной переменной) служит адресом объекта в памяти, выделенной для него оператором new. Таким образом, в С# для всех объектов классов должна динамически выделяться память.
Есть и другие трактовки термина "класс", показывающие, в частности, чем класс отличается от объекта. Считайте, что класс — это просто новый тип данных (как char, int или long), с которым связаны некие методы. Объект же — это экземпляр типа, или класса. Определение класса как чертежа объекта. На базе класса — "чертежа" набора функциональных возможностей — можно создать объект, обладающий всеми возможностями этого класса.
Поле — член-переменная, содержащая некоторое значение и описанная внутри класса. В ООП поля иногда называют данными объекта. К полю можно применять несколько модификаторов в зависимости от того, как вы собираетесь это поле использовать. В число модификаторов входят static, readonly и const. Поля характеризуют свойства объектов класса. Когда создается новый объект класса, то этот объект представляет собой набор полей класса. Два объекта одного класса имеют один и тот же набор полей, но разнятся значениями, хранимыми в этих полях. Каждое поле имеет модификатор доступа, принимающий одно из четырех значений: public, private, protected, internal( Его назначение — заявить о том, что некоторый член известен во всех файлах, входящих в состав компоновочного, но неизвестен вне его. Проще говоря, член, отмеченный этим модификатором, известен только программе, но не где-то еще).
Метод — элемент класса, кот реализует вычисления или другие действия, выполняемые классом или экземпляром. Метод — это фрагмент кода, к кот можно обратиться по имени. Он описывается один раз, а вызываться может столько раз, сколько необходимо. У метода также есть спецификаторы доступа: public, private, protected, virtual, override, abstract.
Методы — это процедуры (подпрограммы), которые манипулируют данными, определенными в классе, и во многих случаях обеспечивают доступ к этим данным. Обычно различные части программы взаимодействуют с классом посредством его методов. Любой метод содержит одну или несколько инструкций. Каждый метод имеет имя, и именно это имя используется для его вызова. В общем случае методу можно присвоить любое имя. Имена методов сопровождаются парой круглых скобок. Например, если метод имеет имя getval, то в тексте будет написано getval (). Это помогает отличать имена переменных от имен методов.
Запись метода: доступ тип_возврата имя (список_параметров) {// тело метода}
Свойства иногда называют "разумными" полями (smart fields), так как они на самом деле являются методами, которые клиенты класса воспринимают как поля. Они служат для организации доступа к полям класса. Свойство состоит из имени и пары аксессоров (get, set). Аксессоры используются для чтения содержимого переменной и записи в нее нового значения. Основное достоинство свойства состоит в том, что его имя можно использовать в выражениях и инструкциях присваивания подобно обычной переменной, хотя в действительности здесь будут автоматически вызываться get- и set-аксессоры.
[спецификатор] тип имя_свойства
{ get{return();}//получатель значения поля
set{}//установщик поля служит для его изменения
}
3. Класс. Синтаксис объявления класса. Ссылка на самого себя
Объектно-ориентированное программирование и проектирование построено на классах. Любую программную систему, выстроенную в объектном стиле, можно рассматривать как совокупность классов, возможно, объединенных в проекты, пространства имен, решения, как это делается при программировании в Visual Studio .Net. У класса две различные роли: модуля и типа данных. Класс - это модуль, архитектурная единица построения программной системы. Модульность построения - основное свойство программных систем. В ООП программная система, строящаяся по модульному принципу, состоит из классов, являющихся основным видом модуля.
Класс — это шаблон, который определяет форму объекта. Он задает как данные, так и код, который оперирует этими данными. Объекты — это экземпляры класса. Класс — это логическая абстракция. О ее реализации нет смысла говорить до тех пор, пока не создан объект класса, и в памяти не появилось физическое его представление. Данные содержатся в переменных экземпляров, а код — в методах. Класс определяет также ряд специальных членов данных и методов-членов, например: статические переменные, константы, конструкторы, деструкторы, индексаторы, события, операторы и свойства.
Класс создается с помощью ключевого слова class. Общая форма определения класса, который содержит только переменные экземпляров и методы, имеет следующий вид:
[атрибуты][модификаторы]class имя_класса [:список_родителей]
{// Объявление переменных экземпляров.
доступ тип переменная1; доступ тип переменнаяN;
доступ тип_возврата метод 1 (параметры) // Объявление методов
{ // тело метода}
доступ тип_возврата методN (параметры) {// тело метода}
Ссылка на самого себя
В C# зарезервированное слово this используется для ссылки на текущий объект. Необходимость такого слова связана в основном с разрешением конфликта имен в конструкторах. Конечно, избежать конфликта можно проще — выбрав другие имена. Кроме того, с помощью этого слова нельзя обратиться к статическим членам класса, так как они принадлежат не конкретному объекту, а классу в целом.
public Employee(string fullName, int empID)
{ this.fullName=fullName; //присвоение полю fullName значение параметра fullName
this.empID=empID; }
