Объектно-ориентированное программирование (ООП)

Предварительные ВОПРОСЫ к экзамену по курсу

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

(семестр 3)

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Объектно-ориентированное программирование как идеология программирования и как технология. Достоинства и недостатки.

Основные понятия объектно-ориентированного программирования — класс, объект, поле, метод, свойство.

Класс. Синтаксис объявления класса. Ссылка на самого себя.

Конструкторы и деструкторы. Функциональное назначение. Виды конструкторов.

Объекты и их жизненный цикл. Создание и уничтожение объектов.

Инкапсуляция. Определение. Функциональное назначение. Реализация. Примеры применения.

Инкапсуляция. Свойства. Функциональное назначение. Реализация. Создание индексатора. Примеры применения.

Инкапсуляция. Скрытие членов класса. Функциональное назначение. Реализация. Примеры применения.

Наследование. Функциональное назначение. Реализация. Примеры применения.

Наследование. Конструктор по умолчанию. Назначение.

Методы. Определение. Функциональное назначение. Способы реализации. Примеры применения.

Полиморфизм. Функциональное назначение. Способы реализации. Примеры применения.

Перегрузка методов. Функциональное назначение. Способ реализации. Примеры применения.

Виртуальные методы. Функциональное назначение. Примеры применения.

Перегрузка операций. Функциональное назначение. Способ реализации. Примеры применения.

Управление областями видимости членов класса. Функциональное назначение. Способ реализации. Примеры применения.

Исключительные ситуации. Понятие. Способы обработки исключительных ситуаций. Примеры применения.

18.Интерфейсы. Функциональное назначение. Иерархия интерфейсов. Множественное наследование: проблемы и способы их разрешения.

СИНТАКСИС ЯЗЫКА

1. Концепция типа данных. Встроенные (Build-in) типы данных и их реализация в языке С#.

Концепция типа данных. Соглашения о совместимости и приведение типов.

Концепция типа данных. Числовые типы данных.

Концепция типа данных. Символьные типы данных.

5. Концепция типа данных. Составные типы данных. Массивы и их реализация в С#. Структуры.

Концепция типа данных. Явное и неявное преобразование типов.

Концепция типа данных. Определение собственных типов данных.

Концепция типа данных. Значащие (размерные) (Value type) и ссылочные (Reference type) типы данных. Упаковка и распаковка (Boxing, Unboxing).

9. Концепция типа данных. Переменные и константы и их реализация в С#.

Принцип модульности программ. Глобальные и локальные имена. Область видимости имен. Выбор области видимости.

Принцип модульности программ. Метод, как отдельный модуль программы. Интерфейсная и скрытая часть метода. Формальные и фактические параметры метода. Примеры применения.

Унарные и мультипликативные операции. Примеры применений.

Аддитивные и сдвиговые операции. Примеры применений.

Операции отношения и действий надо типами данных. Примеры применений.

Логические операции. Примеры применений.

16.Организация циклов в С#. Примеры применений.

Операторы перехода и оператор присваивания.

Операторы условного перехода. Примеры применений.

Необходимые требования для попытки успешно сдать экзамен.

1. Четкое осмысленное знание определений основных понятий.

2. Умение привести примеры излагаемого материала.

3. Осмыслено проводить сравнительный анализ различных возможных способов реализации.

Новые вопросы

Объектно-ориентированное программирование (ООП)

  1. ООП, как идеология программирования. Отличия от предшествующих подходов, применяемых в программировании ранее.
  2. Основные понятия ООП: класс, объект, поле, свойство, метод, событие. Реализация событий с помощью модели делегатов[*].
  3. Понятие класса в ООП. Синтаксис объявления класса. Члены класса.
  4. Объекты в ООП. Принадлежность объекта типу (связь между типом и объектом). Жизненный цикл объектов: создание и разрушение объектов. Garbage Collector и разрушение объектов.
  5. Конструкторы: понятие, назначение, примеры применения. Параметризованные конструкторы. Конструкторы «по-умолчанию». Скрытые (private) конструкторы.
  6. Инкапсуляция: понятие, назначение, примеры применения. Ограничение области видимости членов класса (private, public, protected, internal).
  7. Инкапсуляция. Реализация механизма инкапсуляции через свойства. Функции-аксессоры (set, get). Отсутствие или ограничение области видимости одного из аксессоров.
  8. Наследование: понятие, назначение, примеры применения. Поведение различных членов класса при наследовании. Совпадения сигнатур методов при наследовании.
  9. Агрегация: понятие, назначение, примеры применения. Отличия от наследования. Жизненный цикл агрегируемых объектов.
  10. Методы класса. Сигнатура метода. Абстрактные (abstract), виртуальные (virtual) и перезаписанные (override) методы. Статические (static) методы классов и особенности их применения.
  11. Перегрузка операций: понятие, назначение, примеры применения. Перегрузка арифметических и логических операций. Особенности перегрузки операции равенства (==).
  12. Полиморфизм: понятие, назначение, примеры применения. Суть принципа «один интерфейс – множество методов».
  13. Исключительные ситуации: понятие, назначение, примеры применения. Иерархия исключений. Создание (throw) и перехват (try-catch-finally) объектов-исключений. Способы реагирования на исключительные ситуации. Исключения, которые нельзя перехватить.
  14. Интерфейсы: понятие, назначение, примеры применения. Реализация интерфейсов. Приведение к интерфейсу. Коллизия имен при реализации двух и более интерфейсов. Назначение интерфейсов IComparable, IClonable, ISerializeable.
  15. Функциональный тип – делегаты: понятие, назначение, примеры применения. Функция, как экземпляр делегата. Делегат, как свойство класса.

Возможности языка C# и платформы .NET

  1. Программный проект: консольный, оконный. Файлы, составляющие проект. Исполняемые файлы (*.ЕХЕ). Понятие «сборки» в .NET.
  2. Система типов языка C#. Размерные (value-type) и ссылочные (reference-type) типы. Семантика присваивания. Преобразования между ссылочными и размерными типами. «Упаковка-распаковка» типов (boxing, unboxing).
  3. Соглашение о совместимости и преобразование типов. Явные и неявные преобразования. Класс Convert.
  4. Переменные и выражения. Области видимости и жизни переменных. Глобальные и локальные переменные. Константы.
  5. Операции в выражениях, приоритет операций. Операции sizeof и typeof. Операция new.
  6. Методы арифметических классов. Операции сдвига.
  7. Логические операции, условные выражения. Операции проверки типа и приведения к типу.
  8. Составные типы данных, массивы, списки. Многомерные и вложенные (jagged) массивы. Класс Array. Семантика присваивания массивов.
  9. Строки постоянной длины (string и String) и построитель строк (StringBuilder). Операции над строками.
  10. Структуры (struct) и перечисления (enum). Отличия структур от классов.

[*] Курсивом выделены вопросы повышенной сложности. При ответе на такой вопрос можно повысить свою оценку на экзамене или не отвечать на другой вопрос билета (на усмотрение экзаменатора).

Наши рекомендации