
- •Кратко опишите объектно-ориентированный стиль программирования. В чем его преимущества в сравнении с процедурным стилем?
- •Что такое объект? Из чего он состоит?
- •Расскажите о том, как соотносятся классы и объекты?
- •Назовите базовый модуль повторного использования в Си#. Опишите его.
- •Каковы достоинства инкапсуляции в создании по. Какие два ключевых слова реализуют концепцию инкапсуляции?
- •В чем разница между классом и его объектами?
- •Что представляют собой ключевые слова и идентификаторы?
- •Как вызывается метод? Что при этом происходит?
- •Для чего используются пространства имен? в чем смысл использования ключевого слова «using»?
- •Что представляют собой фундаментальные части метода? Как указать, что метод не возвращает значения?
- •Что представляют собой фундаментальные части метода? Как задействовать аргументы в вызове метода?
- •Что представляют собой фундаментальные части метода? Что такое формальные параметры?
- •Что представляют собой фундаментальные части метода? Как связаны аргументы и формальные параметры?
- •Что является атомами программы на Си#?
- •Приведите примеры ключевых слов Си#?
- •Как переменная экземпляра может быть инициализирована при создании объекта?
- •Какие типы существуют Си#? Какие атрибуты отличают разные типы друг от друга?
- •В каких случаях в исходном тексте программы следует использовать константы? в чем их преимущества?
- •19.Что такое статическая переменная класса? Можно ли присвоить статической переменной некоторое значение, когда еще не создано никаких объектов класса?
- •20.Что такое статическая переменная класса? Возможен ли доступ к статической переменной из объекта класса, в котором она объявлена?
- •21.Являются ли методы со следующими заголовками правильно перегруженными?
- •22.Как перегруженные конструкторы делаю класс более удобным при использовании?
- •23.Назовите две основные задачи сборщика мусора?
- •24.Что такое деструктор? Почему он не используется для освобождения ресурсов, не относящихся к памяти?
Кратко опишите объектно-ориентированный стиль программирования. В чем его преимущества в сравнении с процедурным стилем?
Объектно-ориентированные программы работают совсем по-другому. Они организованы вокруг данных, а ключевой принцип такой организации гласит: именно данные должны управлять доступом к коду. В объектно-ориентированном языке программист определяет данные и код, который разрешен для выполнения действий над этими данными. Таким образом, тип данных точно определяет операции, которые могут быть к ним применены.
Для поддержки принципов объектно-ориентированного программирования все ООП-языки, включая С#, имеют три характерных черты: инкапсуляцию, полиморфизм и наследование.
Инкапсуляция — это механизм программирования, который связывает код (действия) и данные, которыми он манипулирует, и при этом предохраняет их от вмешательства извне и неправильного использования.
Основной единицей инкапсуляции в С# является класс. Класс определяет форму объекта. Он задает как данные, так и код, который будет оперировать этими данными. В С# класс используется для создания объектов. Объекты — это экземпляры класса. Таким образом, класс — это по сути набор шаблонных элементов, которые показывают, как построить объект.
Код и данные, которые составляют класс, называются членами класса. Данные, определенные в классе, называются переменными экземпляра (instance variable), а код, который оперирует этими данными, — методами-членами (member method), или просто методами
Полиморфизм (от греческого слова polymorphism, означающего "много форм") — это качество, которое позволяет одному интерфейсу получать доступ к целому классу действий.
Наследование — это процесс, благодаря которому один объект может приобретать свойства другого. Благодаря наследованию поддерживается концепция иерархической классификации
Что такое объект? Из чего он состоит?
Объект- это эеземпляр класса
Building house = new Building();
Это объявление выполняет две функции. Во-первых, оно объявляет переменную с именем house классового типа Building. Но эта переменная не определяет объект, а может лишь ссылаться на него. Во-вторых, рассматриваемое объявление создает реальную физическую копию объекта и присваивает переменной house ссылку на этот объект. И все это — "дело рук" оператора new. Таким образом, после выполнения приведенной выше строки кода переменная house будет ссылаться на объект типа Building.
Оператор new динамически (т.е. во время выполнения программы) выделяет память для объекта и возвращает ссылку на него. Эта ссылка (сохраненная в конкретной переменной) служит адресом объекта в памяти, выделенной для него оператором new. Таким образом, в С# для всех объектов классов должна динамически выделяться память
Расскажите о том, как соотносятся классы и объекты?
Класс — это шаблон, который определяет форму объекта. Он
задает как данные, так и код, который оперирует этими данными. С# использует спецификацию класса для создания объекта. Объекты — это экземпляры класса. Таким образом, класс — это множество намерений (планов), определяющих, как должен быть построен объект. Важно четко понимать следующее: класс — это логическая абстракция. О ее реализации нет смысла говорить до тех пор, пока не создан объект класса, и в памяти не появилось физическое его представление. И еще. Вспомните, что методы и переменные, составляющие класс, называются членами класса
Класс определяет также ряд специальных членов данных и методов-членов, например статические переменные, константы, конструкторы, деструкторы, индексаторы, события, операторы и свойства.
Класс создается с помощью ключевого слова class. Общая форма определения класса, который содержит только переменные экземпляров и методы, имеет следующий вид:
class имя_класса {
// Объявление переменных экземпляров.
доступ тип переменная1;
доступ тип переменная2;
//. . .
доступ тип переменнаяN;
// Объявление методов.
доступ тип_возврата метод 1 (параметры) {
// тело метода
}
доступ тип_возврата метод2{параметры) {
// тело метода
доступ тип_возврата методы {параметры) {
// тело метода
}
}
Каждый объект класса имеет собственные копии переменных экзем-
пляра, определенных в этом классе. Таким образом, содержимое переменных в одном объекте может отличаться от содержимого аналогичных переменных в другом. Между двумя объектами нет связи, за исключением того, что они являются объектами одного и того же типа. Например, если у вас есть два объекта типа Building и каждый объект имеет свою копию переменных floors, area и occupants, то содержимое соответствующих (одноименных) переменных этих двух экземпляров может быть разным.