Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Для начала рассмотрим конструктор без параметра.

Лабораторная работа №3

Тема: изучение основ объектно-ориентированного программирования в среде Microsoft Developer Studio

Цель работы:

создание приложения на основе принципов объектно-ориентированного программирования в среде Microsoft Developer Studio (Visual C#)

Основные понятия

Класс является фундаментом на котором построен весь язык C#. В классе определены данные и код работающий с этими данными.Для того чтобы составлять сложные проекты обязательно нужно знать работу классов, объектов и методов.

Класс является основой для создания объектов. Объекты являются экземплярами класса. Инициализация переменных в объекте происходит в конструкторе. В классе могут быть определены несколько конструкторов. Нужно понимать разницу между классом и объектом: класс является логической абстракцией до тех пор пока не будет создан объект и не появится физическая реализация этого класса в памяти компьютера.

Методы и переменные составляющие класс, называются членами класса.

Общий синтаксис

С самого начала нужно отметить, что в C# определены несколько специфических разновидностей членов класса. Это- переменные экземпляра, статические переменные, константы, методы, конструкторы, деструкторы, индексаторы, события, операторы и свойства. Для начала разберемся с переменными экземпляра и методами, являющимися основными элементами класса.

При создании класса в начале указывается ключевое слово Class.

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

Class <имя класса>

{

//объявление переменных экземпляра

access type var1;

access type var2;

//….

access type varN;

//объявление методов

access type method1(параметры){

//тело метода

}

access type method1(параметры){

//тело метода

}

//…..

access type methodN(параметры){

//тело метода

}

 

}

В примере вместо слова access ставится модификатор доступа(private т.е. члены класса доступны только в пределах класса, public члены класса доступны вне класса). Если модификатор не указан, то по умолчанию он имеет значение private.

Определение класса

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

Назовем его Transport,

Для начала создадим класс который содержит только данные.

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

}

Для того чтобы создать объект типа transport нужно использовать оператор new.

transport lada = new transport ();

lada – это экземпляр класса transport. В общем виде это будет выглядеть так

/*-------------------------------- Пример1-----------------------*/

namespace ConsoleApplication1

{

class Program

{

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

}

 

static void Main(string[] args)

{

transport lada = new transport ();

}

}

}

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

Для присваивания переменной экземпляра какого либо значения используется символ «.»(точка).

Имя экземпляра.Переменная=значение;

Далее создадим экземпляр класса и присвоим значения переменным и выведем результат на экран.

/*-------------------------------- Пример2-----------------------*/

namespace ConsoleApplication1

{

class Program

{

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

}

 

static void Main(string[] args)

{

transport lada = new transport ();

lada.col = 5;

lada.salon = "sedan";

lada.bak = 40;

System.Console.WriteLine("вместимость {0} человек", lada.col);

System.Console.WriteLine("Тип кузова {0}", lada.salon);

System.Console.WriteLine("Объем бака {0}", lada.bak);

}

}

}

 

Методы

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

Общий синтаксис метода выглядит так:

access type name(параметры)

{

//тело метода

}

Здесь access – это модификатор доступа(о нем мы уже говорили), а type это тип данных возвращаемых методом. Если метод не возвращает никакого значения, а только лишь выполняет какие либо действия то его тип должен быть void.

Добавление метода к классу

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

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

В наш класс после описания переменных нужно добавить следующий фрагмент кода

public void km()

{

System.Console.WriteLine("топлива этого автомобиля хватит на "+bak*20+"км");

}

Мы назвали метод «km», тип данных указали void так как мы просто выполняем действия не возвращая результата.

Теперь для того чтобы вызвать метод нужно после присваивания переменным значения непосредственно в программе вызвать метод

/*-------------------------------- Пример3-----------------------*/

lada.km();

Весь код

namespace ConsoleApplication1

{

class Program

{

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

public void km()

{

System.Console.WriteLine("топлива этого автомобиля хватит на "+bak*20+"км");

}

}

 

static void Main(string[] args)

{

transport lada = new transport();

lada.col = 5;

lada.salon = "sedan";

lada.bak = 40;

System.Console.WriteLine("вместимость {0} человек", lada.col);

System.Console.WriteLine("Тип кузова {0}", lada.salon);

System.Console.WriteLine("Объем бака"+lada.bak);

lada.km();

System.Console.ReadLine();

}

}

}

 

Возвращение методом значения

Методы возвращают значение вызывающей подпрограмме используя оператор return

Return value; //здесь value это возвращаемое значение.

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

public int km()

{

return bak*20;

}

Здесь вместо void мы поставили тип int, так как результат будет целым числом.

Для проверки в код вместо строчки

lada.km();

напишем следующую строчку

System.Console.WriteLine(lada.km());

Если мы проверим то увидим что программа выведет полученный результат в нашем случае это число 800.

Конструкторы

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

Class-name()

{

//код конструктора

}

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

Для начала рассмотрим конструктор без параметра.

Вернемся снова к нашему примеру. Допустим мы хотим в конструкторе явно указать начальные значения переменных экземпляра

Вот пример такого класса с конструктором

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

public transport() {

col = 4;

salon = "universal";

bak = 35;

}

 

Если в программе создать экзепляр класса и вывести его переменные на экран то мы увидим соответствующие значения.

Конструктор с параметрами

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

Построение такого класса рассмотрим снова на нашем примере

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

public transport(int c, string s, int b) {

col = c;

salon = s;

bak = b;

}

}

Здесь переменные “c” “s” “b” ‘это параметры. Теперь посмотрим как же переменные задаются непосредственно в программе при создании экземпляра класса.

transport lada = new transport(7,"минивен", 50);

Общий вид программы с выводом на экран выглядит следующим образом

/*-------------------------------- Пример4-----------------------*/

namespace ConsoleApplication1

{

class Program

{

class transport {

public int col;//количество пассажиров

public string salon; //тип кузова

public int bak;//объем бака

public transport(int c, string s, int b) {

col = c;

salon = s;

bak = b;

}

}

 

static void Main(string[] args)

{

transport lada = new transport(7,"минивен", 50);

System.Console.WriteLine("вместимость {0} человек", lada.col);

System.Console.WriteLine("Тип кузова {0}", lada.salon);

System.Console.WriteLine("Объем бака"+lada.bak);

System.Console.ReadLine();

}

}

}

Задания к лабораторной работе

1. (4 баллов). Изучить теоретическую часть лабораторной работы и откомпилировать примеры (1-4). Разобраться с назначением каждой строки программы. Добавить комментарии в программы.

2. (5-6 баллов). Реализовать на основе примеров одну программу, в которой используются все фрагменты кода из теоретической части. Откомпилировать программу. Разобраться с назначением каждой строки программы. Добавить комментарии в программу.

3. (7-9 баллов). Реализовать класс по заданию с выбранным номером. Создать файл с основной функцией программы main (), инициализировать объект разработанного класса, вызвать все методы, которые существуют в этом классе.

Задания:

1. Разработать класс CCrosslines, описывающий две прямые на плоскости:

Свойства класса:

· координаты точки пересечения x, y;

· коэффициент для первой и второй прямой a 1 и a 2;

· смещение b 1 и b 2 (в соответствии с уравнением прямой:

· y = ax + b);

· флаг типа BOOL, который определяет наличие или отсутствие точки пересечения прямых.

Методы класса:

· конструктор: присвоение нулевых значений a, b и флагу;

· ввод пользователем параметров прямых a 1, a 2, b 1, b 2;

· определение координаты точки пересечения прямых, присвоение значения 0 или 1 флагу;

· вывод параметров прямых a 1, a 2, b 1, b 2;

· вывод координат точки пересечения или сообщения, что прямые не пересекаются.

2. Разработать класс CCircle, описывающий круг.

Свойства класса:

· координаты точки центра круга x, y;

· радиус R;

· площадь S;

· периметр P.

Методы класса:

· конструктор: присвоение нулевых значений свойствам класса;

· ввод пользователем значений координат точки центра круга и радиуса;

· вычисление и вывод на экран значения площади круга;

· вычисление и вывод на экран значения периметра круга;

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

3. Класс CPtoD для перевода полярных координат в декартовы.

Свойства класса:

· угол в радианах rad;

· радиус R;

· координата х;

· координата у.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· задание пользователем величины угла в градусах и радиуса;

· перевод величины угла в градусах в радианы;

· вычисление координат х и у по значению угла в радианах и радиусу;

· вывод на экран координат х и у.

4. Класс CSquareUr для решения квадратного уравнения.

Свойства класса:

· коэффициенты а, b, с квадратного уравнения

· корни х 1 и х 2;

· флаг, показывающий количество корней (0, 1 или 2).

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем значений а, b и с;

· вывод на экран значений а, b, с;

· вычисление корней, присвоение определенного значения флагу;

· вывод на экран корней или сообщения, что их нет (с проверкой флага).

5. Разработать класс для CRomb для описания ромба.

Свойства класса:

· диагонали ромба d 1 и d 2;

· площадь S;

· периметр P.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем значений свойств класса;

· вычисление и вывод на экран значения площади ромба;

· вычисление и вывод на экран значения периметра ромба;

· вычисление длины стороны ромба и вывод ее значения на экран.

6. Разработать класс для описания прямоугольного треугольника CPrTreug.

Свойства класса:

· катеты прямоугольного треугольника k 1 и k 2;

· гипотенуза g;

· площадь S;

· периметр P.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем с клавиатуры значений свойств класса;

· расчет величины гипотенузы и вывод ее значения на экран;

· расчет площади треугольника и вывод ее значения на экран;

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

7. Разработать класс для описания параллелепипеда CParal.

Свойства класса:

· ширина, длина и высота параллелепипеда w, l и h;

· площадь поверхности S;

· объем V;

· диагональ параллелепипеда d.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем с клавиатуры значений свойств класса;

· расчет величины диагонали параллелепипеда и вывод ее значения на экран;

· расчет и вывод на экран площади поверхности параллелепипеда;

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

8. Разработать класс CRing, описывающий кольцо.

Свойства класса:

· координаты точки центра кольца x, y;

· внешний и внутренний радиусы кольца R и r;

· площадь S.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем значений координат точки центра круга и радиусов;

· проверка правильности исходных данных (R > r, r >0);

· вычисление и вывод на экран значения площади кольца;

· определение, лежит ли внутри кольца точка, координаты которой вводит пользователь.

9. Разработать класс для описания результатов сессии CExamine.

Свойства класса:

· количество студентов в группе;

· общее количество оценок «отлично» за сданные экзамены;

· общее количество оценок «хорошо» за сданные экзамены;

· общее количество оценок «удовлетворительно» за сданные экзамены;

· общее количество неудовлетворительных оценок и неявок на экзамены;

· средний балл студентов в группе.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем количества оценок «отлично»;

· ввод пользователем количества оценок «хорошо»;

· ввод пользователем количества оценок «удовлетворительно»;

· ввод пользователем количества оценок «неудовлетво­рительно» и неявок;

· определение и вывод на экран значения среднего балла.

10. Разработать класс для расчета заработной платы отдела Cwage.

Свойства класса:

· величина зарплаты z 1;

· величина зарплаты z 2;

· величина зарплаты z 3;

· количество k 1 работников с зарплатой z 1;

· количество k 2 работников с зарплатой z 2;

· количество k 3 работников с зарплатой z 3;

· общая зарплата отдела z.

Методы класса:

· конструктор: присвоение нулевых значений переменным;

· ввод пользователем значений z 1, z 2, z 3;

· ввод пользователем количества работников с разными зарплатами;

· вывод пользователем значений z 1, z 2, z 3;

· определение и вывод на экран общей зарплаты отдела.

11. Разработать класс CRectangle, который содержит свойства:

· левая граница по оси Х (Left);

· правая граница по оси Х (Right);

· верхняя граница по оси Y (Top);

· нижняя граница по оси Y (Bottom)

и методы:

· конструктор, который присваивает значениям свойств случайные числа;

· метод запроса у пользователя значений свойств прямоугольника;

· определение площади фигуры и вывод ее на экран;

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

4. (10-12 баллов). Полностью описать в комментариях логику работы программы, назначение каждой конструкции в программе, входные и выходные параметры в методах и т.д. Используя символ комментариев

///

с тегами: <sumary>, <param>.

Порядок выполнения работ

1. Ознакомиться с постановкой задачи и исходными данными. Определить вариант индивидуального задания.

2. Сконструировать структуру программы.

3. Составить текст программы.

4. Набрать текст программы.

5. Выполнить компиляцию программы.

6. Провести анализ и исправление обнаруженных синтаксических ошибок в тексте программы.

7. Получить решение (изображение) и, в случае обнаружения логических ошибок, определить и устранить их.

Содержание отчета

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

2. Индивидуальное задание.

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

4. Результаты работы программы.

5. Интерпретация результатов.

6. Выводы.

Контрольные вопросы

1. Каковы основные свойства объектно-ориентированного программирования?

2. Какие свойства имеет разработанный вами класс?

3. Какие методы содержит разработанный вами класс, какие свойства класса используются в этих методах?

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

5. Какие специальные методы класса вы знаете, как они использованы в разработанном вами классе?

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...