3. Постановка задачи. 4. Порядок выполнения работы. 5. Содержание отчета. Лабораторная работа № 2. Создание объектов. 2. Общие сведения
3. Постановка задачи Создать класс < имя класса> (имя класса задается в соответствии с выбранным вариантом), содержащий поля, которые можно использовать для хранения данных. Предусмотреть инициализацию переменных (полей) класса, помещение данных в переменные и извлечение данных.
4. Порядок выполнения работы В главном меню системы программирования выберите команду File New Project или щелкните на соответствующей инструментальной кнопке. В окне New Project выберите пункт Console Application и щелкните на кнопке OK. В открывшемся окне в соответствии с вариантом задания напишите программу, использующую созданный вами класс.
5. Содержание отчета 5. 1 Тема и цель работы. 5. 2 Текст программы. 5. 3 Результаты выполнения программы.
Приложение 1 Варианты заданий
Лабораторная работа № 2 Создание объектов
1. Цель работы. Получение навыков в разработке программ с использованием объектов.
2. Общие сведения Класс предоставляет компилятору все необходимые сведения для создания создания объекта данного класса. В то же время в реальной программе могут действовать только объекты. Как только определен класс, можно создать объект этого типа, используя имя класса. Фактически имя класса становится спецификатором нового типа данных. Например, следующий код создает объект с именем intqueue типа queue: queue intqueue. Для создания объекта каждый класс автоматически снабжается одноименным методом без параметров, который называется конструктором по умолчанию. Задача конструктора заключается в выделении объекту динамической памяти, необходимой для размещения всех его полей. При обращении к конструктору используется зарезервированное слово new. Возможные варианты создания объектов показаны здесь:
using System; { class queue {private int q=50; private char[] arrchar= new char[4] {'a', 'b', 'c', 'd'}; public int p = q; public char ch = arrchar[0]; } class Executer { [STAThread] static void Main() { //Новый объект можно создать в одной строке: queue a = new queue(); // создание объекта a класса queue // ... или двух queue b; b = new queue(); // создание объекта b класса queue } } } Если рассматривается та часть программы, которая не входит в состав класса, то для вызова переменной класса необходимо использовать имя объекта и оператор «точка». Например, следующий фрагмент иллюстрирует вызов переменной p для объекта а и переменной ch для объекта b: using System; { class queue ... ... queue a = new queue(); // создание объекта a класса queue queue b; b = new queue(); // создание объекта b класса queue Console. WriteLine(a. p); // Вызов значения переменной p Console. WriteLine(b. ch); // Вызов значения переменной ch Console. ReadLine(); // Ожидание нажатия клавиши Enter } } } Очень важно ясно себе представлять, что а и b являются двумя различными объектами. Это означает, что инициализация а не означает инициализацию b. Единственной связью между объектами а и b служит то, что они являются объектами одного и того же типа. Более того, копии переменных q, char, p и ch объекта а совершенно независимы от соответствующих копий переменных объекта b. Использование имени класса и оператора «точка» необходимо только при вызове переменных или функций извне класса. Внутри класса одна переменная или функция может вызывать другую переменную или функцию непосредственно без использования оператора «точка». Умалчиваемый конструктор, как и любой другой метод класса, можно перегрузить. Перегрузка метода заключается в том, что в классе объявляется одноименный метод. Чтобы компилятор «понял», о каком методе идет речь, набор входных параметров перегруженного метода (с учетом полиморфизма) должен отличаться от параметров оригинального — это обязательное условие. При необходимости можно сколько угодно раз перегружать метод, лишь бы у всех перегруженных методов наборы входных параметров отличались друг от друга и от параметров оригинального метода.
Полиморфизм — это принцип автоматического выбора метода, вызываемого объектом, в соответствии с типом данного объекта и с учетом иерархии наследования. Программа реализующая перегрузку умалчиваемого конструктора представлена в следующем листинге:
using System; namespace Project2 { class queue { private int q=50; private char[] arrchar= new char[4] {'a', 'b', 'c', 'd'}; public int p; public char ch; public queue() {} // Конструктор по умолчанию public queue(int q, int i) // Перегруженный конструктор { p = q; ch = arrchar[i]; } } class Executer { [STAThread] static void Main() { // Создание объекта a с помощью перегруженного конструктора queue a = new queue(500, 1); Console. WriteLine(a. p); Console. WriteLine(a. ch); // Создание объекта b с помощью конструктора по умолчанию queue b = new queue(); Console. WriteLine(b. p); Console. WriteLine(b. ch); Console. ReadLine(); // Ожидание нажатия клавиши Enter } } }
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|