К лабораторным работам по курсу «Объектно-ориентированное программирование» — КиберПедия 

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

К лабораторным работам по курсу «Объектно-ориентированное программирование»

2022-10-04 53
К лабораторным работам по курсу «Объектно-ориентированное программирование» 0.00 из 5.00 0 оценок
Заказать работу

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕКСТИЛЬНЫЙ

УНИВЕРСИТЕТ имени А.Н.КОСЫГИНА»

Учебно-методический комплекс для подготовки бакалавров по направлениямпо специальностям 230100 Информатика и вычислительная техника и 230400 Информационные системы и технологии

 

 

Т.М.Кузьмина

 

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

К лабораторным работам по курсу «Объектно-ориентированное программирование»

        

 

Допущено к изданию редакционно-издательским советом университета

 

 

Москва                                                                            2019


В методических указаниях представлены лабораторные работы по дисциплине «Объектно-ориентированное программирование» по темам:

«Знакомство со средой визуального программирования Microsoft Visual Studio.NET», «Работа с классами», «Работа с закрытыми членами классов»,  «Наследование», «Абстрактные классы и интерфейсы».

В методических указаниях описаны постановка задачи, этапы ее выполнения, приведены индивидуальные задания и планы отчетов по ним для каждой работы. Изложен теоретический материал в объеме, необходимом для постижения сути задач и их решения.

 

Рецензенты: 

доктор технических наук, проф. П.А. Севостьянов,
 кандидат технических наук, доц. О.А. Ветрова

(ФГБОУ ВПО «МГТУ им. А.Н.Косыгина»)

 

Подготовлено к печати на кафедре информационных технологий и систем автоматизированного проектирования.

 


 

Лабораторная работа №1
Знакомство со средой визуального программирования Microsoft Visual Studio. NET

Цель работы – знакомство с возможностями среды Microsoft Visual Studio. NET, изучение средств:

· создания, сохранения и открытия проекта;

· простейших манипуляций с компонентами;

· изменения свойств компонентов;

· создания обработчиков событий.

 

Справочный материал

Microsoft Visual Studio. NET

Microsoft Visual Studio. NET – это среда объектно-ориентированного визуального программирования. Работая в ней, даже начинающий программист может создать программу с профессионально выглядящим интерфейсом. Такая программа может выполнять несложные действия, порой выдавать ошибочные ответы, но при этом ее интерфейс не будет отличаться от многих Windows-приложений.

Практически все существующие системы разработки программного обеспечения используют понятие проекта. Проект объединяет все файлы, необходимые для редактирования, трансляции и отладки приложения.

Для создания нового проекта надо выполнить команду File / New / Project, при этом откроется окно New Project. В открывшемся окне, в левом списке нужно выбрать строку Visual C # Project, в правом списке отметить шаблон Windows Application. Затем в поле ввода ввести имя проекта и, используя кнопку Browse, выбрать каталог, в котором будут храниться файлы проекта.

На рабочем экране располагается довольно много вкладок, которые могут закрывать друг друга, кроме того, их можно удалять с экрана. В пункте меню View собраны команды, которые позволяют вывести и активизировать необходимую вкладку.

Команда View / Designer открывает вкладку проектирования формы; View / Code - вкладку Редактора кода; View / Toolbox – панель с компонентами; View / Properties Window - вкладку Свойства (Properties).

Среда предоставляет формы, на которых размещаются компоненты. Обычно это оконная форма, хотя могут быть и невидимые формы. На форму с помощью мыши переносятся и размещаются пиктограммы компонентов. С помощью простых манипуляций можно изменить размеры и место положения компонентов. При этом все время в процессе проектирования видно результат – изображение формы и расположенных на ней компонентов.

Самое интересное заключается в том, что во время проектирования формы и размещения на ней компонентов Visual Studio. NET автоматически формирует код программы, включая в него соответствующие фрагменты, описывающие данный компонент.

Компоненты могут быть визуальными, видимыми при работе приложения и невизуальные, выполняющие те или иные служебные функции. Визуальные компоненты сразу видны на экране в процессе проектирования в таком же виде, в каком их увидит пользователь во время выполнения приложения.

Обработчики событий – это функции, которые выполняются при наступлении этих событий. Существует несколько способов создания обработчиков событий. Для создания обработчика события можно, например, сначала на форме выделить компонент, с которым это событие должно быть связано, затем перейти на вкладку Свойства, открыть страничку событий (Events), выбрать имя события из списка и выполнить двойной щелчок справа от него. При этом откроется окно Редактора кода, в котором уже будет сгенерирована средой заготовка нужной функции, разработчику останется только вписать в фигурные скобки операторы, задающие реакцию приложения на выбранное событие.

 Управляющая кнопка. Компонент Button

Одним из самых используемых управляющих компонентов является кнопка – визуальный компонент Button.

Данный компонент имеет довольно много свойств, но рассмотрим всего шесть из них. Отметим, что этими свойствами обладают почти все визуальные компоненты, а свойством Name вообще, все компоненты.. Свойство Name задает имя компонента. По умолчанию имя первой кнопки будет b utton1, второй кнопки – b utton2, и т.д. Свойство Name можно изменить. Для этого надо выделить кнопку на форме и открыть вкладку Свойства (Properties), найти название свойства и в поле ввода, расположенном справа от названия, ввести новое имя компонента. Свойство Name – это идентификатор, и строится оно по правилам построения идентификаторов. 

Свойство Text – надпись на компоненте, оно имеет тип s tring, Данное свойство также можно изменить. При задании значения свойства Text можно использовать русские буквы и другие символы, запрещенные при определении идентификаторов. 

Свойства Left, Top, задают координаты левого верхнего угла кнопки в системе координат компонента–контейнера. Компонент-контейнер – это компонент, на котором располагается кнопка. Каждый визуальный компонент имеет свою систему координат, в этой системе координат точка (0,0) располагается в верхнем левом углу, ось Х направлена слева на право, ось У сверху вниз. Свойства Width, Height задают соответственно ширину и высоту компонента. Свойства Left, Top, Width, Height имеют тип int. Значения всех перечисленных свойств, кроме Name, могут быть изменены во время работы программы. Например, для изменения надписи на кнопке можно использовать следующий код:

b utton1. Text =”Первая кнопка”;

а для изменения положения кнопки на форме следующие команды:

button1. Left= button1. Left+10;

button1. Top = button 1. Top +10;

При выполнении последних двух команд, кнопка сдвинется вправо и вниз на 10 пикселей.

При обращении к свойствам формы в обработчиках событий этой формы можно использовать служебное слово this. Например, команды   this. Width, this. Height  будут обращениями, соответственно, к ширине и высоте текущей формы. Команда this. Height =450; изменит высоту формы, а строка

if (this. Height <   button1. Top+25)  button1. Top=100;

переместит кнопку button 1, если она находится на нижнем краю формы.

План отчета

4. Титульный лист.

5. Цель работы.

6. Задание.

7. Теоретический материал, используемый при выполнении задания.

8. Распечатка программы.

Варианты индивидуальных заданий

1) На форме две кнопки А, В.

a) По щелчку по кнопке А кнопка В перемещается влево на 10 пикселей, при достижении левого края формы кнопка В перескакивает к правому краю формы.

b) По щелчку по кнопке В кнопка А уменьшается на 2 пикселя в длину, при достижении минимального размера, размер кнопки А восстанавливается.

2) На форме две кнопки А, В.

a) По щелчку по кнопке А кнопка В движется по диагонали формы (вниз на 2 пикселя и вправо на 4 пикселя), при достижении края формы кнопка В возвращается в начальное положение.

b) По щелчку по кнопке В кнопка А уменьшается на 2 пикселя в длину, при достижении минимального размера, размер кнопки А возвращается в первоначальное состояние.

3) На форме четыре кнопки А, В, С, D. Кнопки А и В расположены одна над другой.

a) По щелчку по кнопке С кнопки А и В сближаются на 16 пикселей, но не перекрывают друг друга.

b) По щелчку по кнопке D кнопки А и В расходятся на 16 пикселей, но останавливаются на краях формы.

4) На форме две кнопки А, В, расположенные одна над другой.

a) По щелчку по кнопке А кнопки сближаются на 10 пикселей, но не перекрывают друг друга.

b) По щелчку по кнопке В кнопки расходятся на 10 пикселей, но останавливаются на краях формы.

5) На форме две кнопки А, В, расположенные на одной горизонтали.

a) По щелчку по кнопке А кнопки сближаются на 10 пикселей, но не перекрывают друг друга.

b) По щелчку по кнопке В кнопки расходятся на 10 пикселей, но останавливаются на краях формы.

6) На форме две кнопки А, В.

a) По щелчку по кнопке А, кнопка В перемещается вверх на 10 пикселей, но останавливается около верхнего края.

b) По щелчку по кнопке В, кнопка В перемещается вниз на 10 пикселей, но останавливается при достижении нижнего края.

7) На форме четыре кнопки А, В, С, D. Кнопки А и В расположены на одной горизонтали.

a) По щелчку по кнопке С кнопки  А и В сближаются на 16 пикселей, но не перекрывают друг друга.

b) По щелчку по кнопке D кнопки А и В расходятся на 16 пикселей, но останавливаются на краях формы.

8) На форме 3 кнопки А, В, С.

a) По щелчку по кнопке А кнопка В перемещается влево на 10 пикселей, достигнув левого края, она перескакивает на правый край.

b) При перемещении курсора мыши над кнопкой С, кнопка В перемещается вправо на 10 пикселей, на краю формы останавливается.

9) На форме 3 кнопки А, В, С.

a) По щелчку по кнопке А кнопка В перемещается вверх на 6 пикселей, достигнув верхнего края, она перескакивает вниз формы.

b) По щелчку по кнопке С кнопка В перемещается вниз на 6 пикселей, на краю формы останавливается.

10) На форме 3 кнопки А, В, С.

a) По щелчку по кнопке А кнопка В движется по диагонали формы (вниз на 2 пикселя и вправо на 4 пикселя), при достижении края формы кнопка В возвращается в начальное положение.

b) По щелчку по кнопке С кнопка В перемещается вниз на 6 пикселей, при достижении края формы возвращается в прежнее положение.

Вопросы:

1. Как создать новый проект?

2. Как открыть проект?

3. Как открыть файл, не принадлежащий проекту?

4. Как создать обработчик события, связанного с определенным компонентом?

5. Как изменить значение свойства Left на этапе проектирования?

6. Как изменить значение свойства Top во время выполнения программы?

 

 

Лабораторная работа №2
Работа с классами

Цель работы – познакомится с понятиями класс, объект класса, научится создавать свои классы и работать с ними.

Справочный материал

Классы

Язык C# позволяет разработчику определить новый тип данных – класс. Простейшее описание класса имеет следующий вид.

class имя класса {< список членов класса>}

 имя класса – это любой идентификатор, уникальный в пределах своей сферы действия;

список членов класса – список, объявляющий члены класса с указанием уровня доступа.

Члены класса – это поля (члены-данные), методы (функции-члены), свойства и события. В данной лабораторной работе будут создаваться классы, имеющие в качестве членов поля и методы.

 

Например:

class Myclass {

public int i; /* слово public  обозначает, что данный член класса является общедоступным*/

public float x;

public float f()

{ return i * y;}}

Во всех объектно-ориентированных языках четко различаются понятия «класс» и «объект». Класс – это определяемый пользователем тип данных, его можно представить себе как чертеж, по которому будут строиться сами данные, т.е. объекты (экземпляры) класса.

В C # создание объектов класса происходит с помощью операции new.

Например:

Myclass a1=new Myclass();

или

Myclass a2;

a2=new Myclass();

Ключевое слово new означает, что среде выполнения следует вызвать конструктор класса и выделить необходимое количество оперативной памяти под экземпляр класса. Поскольку класс относится к ссылочному типу, то выделении памяти производится из «кучи», находящейся в распоряжении среды выполнения.NET. Команды Myclass a 1, Myclass a 2, определяют ссылки на объекты класса, а не сами объекты, объекты создаются с помощью операции new. Но после того как объекты будут созданы, мы будем их называть объект (экземпляр) a 1, и объект (экземпляр) a 2.

Рассмотрим еще один пример:

Myclass c = new Myclass ();

Myclass d;

d = c;

В этом примере создан один объект и две ссылки на него.

Доступ к членам класса осуществляется с помощью операции точка «.».

Например:

c. x =7; //полю х объекта с присвоено значение 7.

d. i =6; //полю i объекта d присвоено значение 6.

a 1. x = c. f ();/*полю х объекта a 1 присвоено значение, которое возвращает метод f, вызванный для объекта с, поскольку ссылка d также указывает на этот же объект, то метод f вернет значение 42.*/

Приведение типов

Автоматическое приведение типов в языке C# происходит только в том случае, когда не происходит потери точности.

Например.

int i=9; float x=i;

Если в результате приведения одного типа к другому может произойти потеря точности, то его программист должен выполнить сам. Для явного приведения типов перед переменной в круглых скобках пишется имя нового типа, например (int) i.

 Пример:

float  i=9;

int  l=(int)i;

i = l;//в этом случае потеря точности не грозит,  и приведение типов //выполняется автоматически.

Многие функции преобразования (приведения) типов включены в библиотечный класс Convert. Например.

int i = Convert. ToInt 32(textBox 1. Text);

В этом примере,  текстовая строка, записанная в поле ввода (textBox 1. Text) будет преобразована в значение типа   int. Если  в textBox 1. Text записана строка, которую нельзя прочитать как целое число, то будет сгенерировано исключение.

В языке C#, стандартные числовые типы, такие как int, float т.д., имеют статические функции-члены (методы), которые также решают задачи преобразования типов, например:

int i= int.Parse(textBox1.Text);

Для того чтобы преобразовать число в строку, лучше использовать метод ToString, определенный  во всех стандартных типах. Например:

textBox 1. Text = i. ToString ();

Хотя тоже можно использовать методы из класса Convert.

Математические функции

При решении некоторых задач, могут потребоваться функции извлечения корня или возведения в степень. Математические функции хранятся в библиотечном классе Math. Если нам надо вычислить sin x, то на языке C# это будет выглядеть следующим образом: Math. Sin (x);

 Отметим, что возвращаемые значения математических функций, как правило имеют тип double. Если мы работаем с переменными типа float, то надо будет выполнить явное приведение типов. Например:

float u = (float) Math. Sin (x);

План отчета

1. Титульный лист.

2. Цель работы.

3. Задание.

4. Теоретический материал, используемый при выполнении задания.

5. Распечатка программы.

Варианты индивидуальных заданий

15) Класс, описывающий прямоугольник. Класс должен иметь методы, решающие следующие задачи:

b) расчет длины диагонали;

c) расчет площади прямоугольника.

16) Класс, описывающий квадрат. Класс должен иметь методы, решающие следующие задачи:

b) расчет длины диагонали;

c) расчет периметр квадрата.

17) Класс, описывающий равнобокую трапецию. Класс должен иметь методы, решающие следующие задачи:

b) расчет периметра трапеции;

c) расчет площади трапеции.

18) Класс, описывающий окружность. Класс должен иметь методы, решающие следующие задачи:

b) расчет длины окружности;

c) расчет площади окружности.

19) Класс, описывающий прямоугольный треугольник. Класс должен иметь методы, решающие следующие задачи:

b) расчет гипотенузы;

c) расчет площади треугольника.

20) Класс, описывающий правильный треугольник. Класс должен иметь методы, решающие следующие задачи:

b) расчет периметра;

c) расчет площади треугольника.

21) Класс, описывающий равнобедренный треугольник. Класс должен иметь методы, решающие следующие задачи:

b) расчет периметра;

c) расчет площади треугольника.

22) Класс, описывающий правильный шестиугольник. Класс должен иметь методы, решающие следующие задачи:

b) расчет периметра;

c) расчет большой диагонали шестиугольника.

23) Класс, описывающий шар. Класс должен иметь методы, решающие следующие задачи:

b) расчет диаметра шара;

c) расчет объем шара.

24) Класс, описывающий прямоугольный параллелепипед. Класс должен иметь методы, решающие следующие задачи:

b) расчет площади боковой поверхности прямоугольного параллелепипеда;

c) расчет объема прямоугольного параллелепипеда.

25) Класс, описывающий правильную треугольную призму. Класс должен иметь методы, решающие следующие задачи:

b) расчет площади боковой поверхности правильной треугольной призмы;

c) расчет объема правильной треугольной призмы.

26) Класс, описывающий круглый прямой цилиндр. Класс должен иметь методы, решающие следующие задачи:

b) расчет диаметра цилиндра;

c) расчет объема цилиндра.

27) Класс, описывающий круглый прямой конус. Класс должен иметь методы, решающие следующие задачи:

b) расчет диаметра конуса;

c) расчет объема конуса.

28) Класс, описывающий правильную четырехугольную пирамиду. Класс должен иметь методы, решающие следующие задачи:

b) расчет периметр основания пирамиды;

c) расчет объема пирамиды.

29) Класс, описывающий правильную треугольную пирамиду. Класс должен иметь методы, решающие следующие задачи:

b) расчет периметр основания пирамиды;

c) расчет объема пирамиды.

Вопросы:

1. Что такое класс?

2. Как описывается класс?

3. Что задает слово public?

4. Как происходит доступ к членам класса?

5. Как вызвать метод класса?

Лабораторная работа №3
Работа с закрытыми членами классов

Цель: Научится создавать конструкторы классов и контролировать ввод данных в поля класса.

Справочный материал

Конструктор класса

Конструктор класса – это метод класса, который предназначен для создания объектов класса и инициализации их.

 Конструктор обладает следующими свойствами:

1. Имя конструктора совпадает с именем класса.

2. Конструктор не имеет возвращаемого значения, даже типа void   

3. Класс может содержать несколько конструкторов, отличающихся либо количеством, либо типами параметров (отличие в этом случае должно быть существенным), либо и тем и другим.

4. Конструктор без параметров называется конструктором по умолчанию.

5. Если ни один конструктор не был написан программистом, то конструктор по умолчанию генерируется компилятором.

6. Если в классе объявлен хотя бы один конструктор, то компилятор не создает своего.

7. В C#, в отличие от многих других языков, любой конструктор, если не указано иное, обнуляет значения полей.

8. Конструктор не может быть вызван явно, он вызывается автоматически при создании экземпляров класса.

Рассмотрим пример.

Определим в классе А два конструктора.

class A { public int x,y;

           public int f() {return x+y;}

public A() { x=1; y=2; }

public A (int xx, int yy) { x=xx; y=yy;} }

При выполнении команды A a= new A(); для создания объекта класса используется конструктор без параметров. Полям объекта а будут присвоены, соответственно, значения 1 и 2.

Если при создании объекта требуется использовать конструктор с параметрами, то в операторе new после имени класса в круглых скобках указываются значения параметров, например, A b= new A(6,13);

А команда A c= new A(3); вызовет ошибку, потому что класс А не содержит конструктора с одним параметром, которому можно было бы присвоить значение 3.

В языке С# существует упрощенная форма написания конструктора: при описании полей класса можно написать инициализирующие выражения.

Пример.

class В {

public int i=10;}

Все строки, содержащие инициализирующие выражения, включаются в начало всех конструкторов. В данном примере строка i=10; будет включена в конструктор, определяемый компилятором.

Переключатели

Компоненты CheckBox и RadioButton используются, для того чтобы пользователь мог включать и выключать какие-то режимы работы приложения или индикации состояния.

CheckBox  называют флажком. Это прямоугольник с надписью, содержание которой определяется свойством Text. В прямоугольнике может находиться галочка, в этом случае, говорят “флажок поднят”, при отсутствии галочки говорят «флажок снят». Щелчок мышки поднимает или снимает флажок. Поднятие и снятие флажка обуславливается свойством Checked. Это свойство имеет булев тип. Значение true – соответствует поднятому флажку, false – опущенному флажку.

Компонент RadioButton в единственном числе очень похож на компонент CheckBox. Отличие заключается в том, что вместо прямоугольника на экран выводится кружочек, а вместо галочки – точка. Появление или исчезновение точки тоже связно со свойством Checked. Но компоненты RadioButton могут объединяться в функциональные группы. В группу попадают все компоненты RadioButton, расположенные в одном контейнере (контейнером называется компонент, на котором могут располагаться другие компоненты, например, форма или панели). В группе может быть выбран только один компонент RadioButton. Компоненты CheckBox, расположенные в одном контейнере, в группу не объединяются, они работают независимо друг от друга.

План отчета

6. Титульный лист.

7. Цель работы.

8. Задание.

9. Теоретический материал, используемый при выполнении задания.

10. Распечатка программы.

Варианты индивидуальных заданий

1. Ограничение на одно из полей следующее: его значение должно быть больше 7 и меньше 10. Форма должна содержать 4 поля, являющиеся объектами Вашего класса.

2. Ограничение на одно из полей следующее: его значение должно быть больше 6 и меньше 14. Форма должна содержать 4 поля, являющиеся объектами Вашего класса.

3. Ограничение на одно из полей следующее: его значение должно быть больше 1 и меньше 8. Форма должна содержать 3 поля, являющиеся объектами Вашего класса.

4. Ограничение на одно из полей следующее: его значение должно быть больше 4 и меньше 16. Форма должна содержать 5 полей, являющихся объектами Вашего класса.

5. Ограничение на одно из полей следующее: его значение должно быть больше 2 и меньше 16. Форма должна содержать 4 поля, являющиеся объектами Вашего класса.

6. Ограничение на одно из полей следующее: его значение должно быть больше 8 и меньше 20. Форма должна содержать 5 полей, являющихся объектами Вашего класса.

7. Ограничение на одно из полей следующее: его значение должно быть больше 6 и меньше 10. Форма должна содержать 4 поля, являющиеся объектами Вашего класса.

8. Ограничение на одно из полей следующее: его значение должно быть больше 7 и меньше 17. Форма должна содержать 5 полей, являющихся объектами Вашего класса.

9. Ограничение на одно из полей следующее: его значение должно быть больше 12 и меньше 100. Форма должна содержать 5 полей, являющихся объектами Вашего класса.

10. Ограничение на одно из полей следующее: его значение должно быть больше 8 и меньше 33. Форма должна содержать 3 поля, являющиеся объектами Вашего класса.

11. Ограничение на одно из полей следующее: его значение должно быть больше 4 и меньше 20. Форма должна содержать 4 поля, являющиеся объектами Вашего класса.

12. Ограничение на одно из полей следующее: его значение должно быть больше 17 и меньше 40. Форма должна содержать 4 поля, являющиеся объектами Вашего класса.

13. Ограничение на одно из полей следующее: его значение должно быть больше 9 и меньше 30. Форма должна содержать 3 поля, являющиеся объектами Вашего класса.

14. Ограничение на одно из полей следующее: его значение должно быть больше 3 и меньше 18. Форма должна содержать 3 поля, являющиеся объектами Вашего класса.

15. Ограничение на одно из полей следующее: его значение должно быть больше 8 и меньше 18. Форма должна содержать 3 поля, являющиеся объектами Вашего класса.

Вопросы:

1. Что задает слово private?

2. Как происходит доступ к членам класса?

3. Что такой конструктор класса?

4. В какой момент происходит вызов конструктора?

5. Может ли класс содержать несколько конструкторов?

6. В каком случае создается конструктор компилятором?

 

 

Лабораторная работа №4
Массивы ссылочных типов.

Цель работы - научится создавать и использовать массивы объектов классов.

Справочный материал

Массивы

Массивом называют упорядоченную совокупность элементов одного типа. Каждый элемент массива имеет один или несколько индексов. Индексы задаются целыми числами. Массиву, как правило, выделяется непрерывная область памяти.

Массивы могут быть одномерными и многомерными. Как все в мире C#, массивы это объекты классов. Место для них выделяется в «куче», работа с ними происходит по ссылке.

Одномерные массивы

Сначала рассмотрим числовые массивы. Описывается массив следующим образом:

<тип> [] <имя_массива>;

Имя массива это ссылка, если массив не инициализируется при объявлении, то создается он оператором new. Рассмотрим пример.

int [] mas 1; mas 1= new int [10];

Число элементов массива задается в момент его создания. В нашем примере мы создали статический массив, но можно было поступить следующим образом:

int n=Convert.ToInt32(textBox1.Text);

int [] mas2=new int[n];

В этом случае, число элементов массива задает пользователем во время работы программы, т.е. создается динамический массив.

Массив может быть создан с помощь инициализирующего значения, например:

int [] mas 3={1,4.-5,9,-4};

в этом случае, массив не только создается, но и задаются значения его элементов.

При создании массива с помощью оператора new, элементы обнуляются. Нумерация элементов массива начинается с 0, т.е. первый элемент массива будет иметь номер 0. Работа с массивом происходим стандартным образом:

mas 1[0]=6;//первому элементу массива mas 1 присвоено значение 6

mas 2[0]=3;//элементу под номером 0, массива mas 2 присвоено значение 3 mas 1[1]= mas 1[0]+ mas 3[0]; //элементу под номером 1, массива mas 1 //присвоена сумма значений первых элементов массивов mas 1, mas 3.

Поскольку в C# массив – объект некоторого класса, можно использовать, методы и свойства этого класса. Так, например, Length – свойство для чтения, возвращающее число элементов массива, если x= mas3. Length; то х получит значение 5.

Массивы ссылочных типов.

На примерах массивов целых чисел, мы рассмотрели, как строятся массивы структурных типов. Рассмотрим, как создаются массивы ссылочных типов.

Пусть у нас есть класс А:

class A { public int x,y;

           public int f() {return x+y;}

public A() { x=1; y=2; }

public A (int xx, int yy) { x=xx; y=yy;} }

Создадим массив объектов этого класса. Команда

  A[] mas4=new A[7];

Создает не сам массив, а массив ссылок. Каждый элемент массива должен быть создан персонально, например, в цикле

for(int i=0;i<7;i++) mas4[i]=new A();

Возможно и такое решение:

A[] mas5={ new A(),new A(3,4),new A(1,2),new A(3,5)}

В этом случае, будет создан массив из 5 элементов и сразу инициализирован.

Неважно как создается массив, в любом случае, работа с ним происходим стандартным образом:

mas 4[0]. x =6; // Полю х элемента под номером 0 присваивается число 6.

mas 4[1]. y = mas 4[0]. x +4; // Полю у элемента под номером 1 присваивается результат вычисления выражения mas 4[0]. x +4, в котором используется поле х элемента №0 того же массива.

mas 4[1]. x = mas 4[0]. f ();Полю х элемента под номером 1 присваивается значение, возвращенное методом f, вызванным для элемента №0 того же массива.

Обратите внимание, элементы массива – это объекты класса. Каждый элемент массива имеет свои поля, определенные в классе А, и для каждого элемента можно вызвать метод f, так же определенный в классе А.

Компоненты ListBox и ComboBox.

 

Для вывода информации обо всех элементах массива удобно использовать компоненты ListBox и ComboBox.

Класс ListBox представляет распространенный компонент среды Windows — список переменной длины, который позволяет пользователю выбрать один из элементов. Здесь мы рассмотрим свойства и методы компонента, необходимые для использования в лабораторной работе. Так, например, нас интересует, прежде всего, работа со строками, поэтому мы будем только о списках строк, хотя ListBox может содержать разные объекты.

Для добавления строки достаточно написать команду:

listBox1.Items.Add("Строка1");

или

string s= "Строка2";

listBox1.Items.Add(s);

 

Следующая команда очищает ListBox:

                    listBox1.Items.Clear();

Команда int n = listBox1.SelectedIndex; записывает в переменную n номер выделенного элемента.

Компонент ComboBox похож на ListBox. Основным различием классов ComboBox и ListBox является способ их отображения в окне. ComboBox использует раскрывающийся список.

Компоненты ListBox и ComboBox можно заполнить на этапе проектирования программы. Для этого в списке свойств надо найти строку Items, выделить ее и щелкнуть по кнопке с тремя точками, расположенной правее слова Items, в открывшемся окне, ввести необходимый список.

План отчета

1. Титульный лист.

2. Цель работы.

3. Задание.

4. Теоретический материал, используемый при выполнении задания.

5. Распечатка программы.

 

Этапы выполнения задания и варианты индивидуальных заданий

 

Варианты классов нужно взять из задания по лабораторной работе №3, затем нужно:

1. Создать массив долгоживущих объектов Вашего класса. Число элементов массива определяется по формуле: х+3, где х - Ваш порядковый номер в списке группы.

2. С формы проекта нужно удалить радио кнопки. На форму поместить компонент ListBox и 2 кнопки. При нажатии на первую из этих кнопок компонент ListBox очищается. При нажатии на вторую кнопку в компонент ListBox помещается информация обо всех элементах массива (значения полей, значения, возвращаемые методами).

3. Так же как в лабораторной работе №3, пользователю должна быть предоставлена возможность работы с активным объектом (возможность изменить значения полей активного объекта). Выбор активного объекта можно реализовать различными способами. Например, активным объектом может быть объект, выделенный в списке ListBox, или объект, номер которого введен в специальное поле ввода.

 

Лабораторная работа №5
Наследование классов.

Цель работы - изучение основных принципов наследования, создание собственной иерархии классов.

Справочный материал

      Наследование

Одним из наиболее мощных свойств класса С++, является возможность их расширения с помощью наследования. Наследование – это создание нового класса путём добавления новых членов к уже существующему классу. Класс, к которому добавляются новые члены называется базовым или родительским классом, а вновь созданный класс производным или дочерним классом.

Двоеточие после имени класса указывает компилятору на то, что класс является производным от другого класса. За двоеточием следует имя базового класса.

Напоминание: методы производного класса могут работать только с открытыми (public) и защищёнными (protected и protected internal) членами базового класса, и если классы находятся в одной сборке, то членами, имеющими уровень доступа internal. Но не могут работать с собственными (private) членами базового класса.

Пример:

с lass cir: vec {

public int R;

public void fun(void)

{ return x*y+R;}}

  Класс cir является наследником класса vec, метод fun использует наравне с полем R, поля базового класса x,y, что возможно в том случае, когда уровень доступности указанных полей либо public, protected.

Ссылки базового класса

Ссылки базового класса могут указывать на объекты производных классов.

Примеры.

B b=new C();// классы В и С определены выше

B d = new D ();

При работе с объектами производных классов, через ссылки базовых классов, доступны, за одним исключением, только члены, определенные в базовом классе (классе ссылки). Исключение – это виртуальные методы.

Если нужно перейти от ссылки базового класса к ссылке производного класса, то надо выполнить преобразование типов.

C c; c=(C) d; b=c;

Поскольку по ссылке базового класса не всегда ясно на какой объект она указывает, то в С# введены специальные операторы, которые выполняют проверку возможно ли сделать соответствующее преобразование типов.

Операторы is и as.

Оператор is никогда не генерирует исключение, он работает со всеми типами. Он имеет следующий вид:

Ссылка is Тип

Оператор is возвращает значение булево типа, true  - если объект на который указывает ссылка можно привести к типу, стоящему после is и false – если ссылка нулевая или объект нельзя привести к указанному типу.

Например.

int i=8;

Object o=new Object();

Boolean b=(i is Object); //b будет равно true

Boolean b1=(o is int); //b1 будет равно false

Оператор as работает со ссылочными типами, он производит нужное преобразование типов, если оно возможно и возвращает null, если оно невозможно. Команда A a = o as A; будет выполнена успешно, но в ссылку а будет записан null, и любое обращение к а как к объекту, например, a.ToString(); вызовет генерацию исключения. Проверку того, не получила ли ссылка нулевого значения, должен выполнить программист. В нашем примере она будет выглядеть так if (a!= null) a. ToString ();

План отчета

1. Титульный лист.

2. Цель работы.

3. Задание.

4. Проанализировать фрагменты программы, в которых вызываются виртуальные и не виртуальные методы, отметить особенности работы этих фрагментов.

5. Распечатка программы.

 

Варианты индивидуальных заданий.

1. Базовый класс «Точка». Классы «Окружность» и «Прямоугольный треугольник» являются производными от класса «Точка». Класс «Конус» является производным от класса «Окружность». Во всех классах определить по два метода, вычисляющих площадь фигуры (площадь точки равна нулю, для объемных тел вычисляется площадь полной поверхности). Один метод виртуальный, другой обычный. В классе «Прямоугольный треугольник» еще определить метод, вычисляющий периметр. В классе «Конус» определить метод, вычисляющий объем.

2. Базовый класс «Точка». Классы «Окружность» и «Ромб» являются производными от класса «Точка». Класс «Конус» является производным от класса «Окружность». Во всех классах определить по два метода, вычисляющих площадь фигуры (площадь точки равна нулю, для объемных тел вычисляется площадь полной поверхности). Один метод виртуальный, другой обычный. В классе «Ромб» еще определить метод, вычисляющий периметр. В классе «Конус» определить метод, вычисляющий объем.

3. Базовый класс «Точка». Классы «Правильный пятиугольник», «Прямоугольный треугольник», «Прямоугольник» являются производными от класса «Точка». Во всех классах определить по два метода, вычисляющих площадь фигуры (п


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

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

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.26 с.