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

Кафедра математики и вычислительной техники

УТВЕРЖДЕНО

Протокол № 1 от 28.08.2013 г.

Зав. кафедрой ___________ Н.С. Нестерова

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

Задания и методические указания к лабораторным работам для студентов БАКАЛАВРИАТА ЗАОЧНОЙ ФОРМЫ ОБУЧЕНИЯ НАПРАВЛЕНИЯ

230100.62 – ИНФОРМАТИКА И ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА

Краснодар

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО НАПИСАНИЮ КОНТРОЛЬНЫХ РАБОТ

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

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

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

Темы, вынесенные в задание, требуют от студента углубленного изучения. Ответ на каждый вопрос должен излагаться подробно, с разъяснениями, со ссылкой на нормативно-правовые акты.

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

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

Студент выполняет одно задание по каждой из трёх тем:

Тема 1: Классы и объекты

Тема 2: Перегрузка

Тема 3: Наследование

Требования к оформлению контрольных работ следующие: на титульном листе необходимо написать свою фамилию, имя и отчество, шифр, название дисциплины и фамилию преподавателя.

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

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

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

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

Классы и объекты

Ознакомиться с материалом по данной теме с помощью источников [1, с.100] или [2, с.178].

Пример выполнения задания

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

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

using System;

//класс точки на плоскости:

class Point2D

{

//поля:

double x, y;

//конструктор:

public Point2D(double x, double y)

{

this.x = x;

this.y = y;

}

//метод:

public double Metric(Point2D p)

{

return Math.Sqrt((x-p.x)*(x-p.x) + (y-p.y)*(y-p.y));

}

}

//класс с точкой вызова:

class Program

{

public static void Main()

{

double x, y;

//ввод координат точек:

Console.Write("x0 = ");

x0 = Convert.ToDouble(Console.ReadLine());

Console.Write("y0 = ");

y0 = Convert.ToDouble(Console.ReadLine());

Console.Write("x1 = ");

x1 = Convert.ToDouble(Console.ReadLine());

Console.Write("y1 = ");

y1 = Convert.ToDouble(Console.ReadLine());

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

Point2D p0 = new Point2D(x0, y0);

Point2D p1 = new Point2D(x1, y1);

//вычисление и вывод результата:

Console.WriteLine("Расстояние равно: " + p1.Metric(p2));

}

}

Задачи для самостоятельного решения

Задание 1.

Задание 2.

Задание 3.

Задание 4.

Задание 5.

Задание 6.

Задание 7.

Задание 8.

Задание 9.

Задание 10.

Задание 11.

Задание 12.

Задание 13.

Задание 14.

Задание 15.

Задание 16.

Задание 17.

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

Задание 18.

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

Задание 19.

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

Задание 20.

Составить описание класса для объектов-векторов, задаваемых координатами концов в трёхмерном пространстве. Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности), вычисления скалярного произведения двух векторов, длины вектора, косинуса угла между векторами. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.

Перегрузка

Ознакомиться с материалом по данной теме с помощью источников [1, с.161] или [2, с.189].

Пример выполнения задания

В примере из раздела 1 перегрузить операцию «-», которая вычисляет расстояние между двумя точками. Программа на языке C# будет следующей:

using System;

//класс точки на плоскости:

class Point2D

{

//поля:

double x, y;

//конструктор:

public Point2D(double x, double y)

{

this.x = x;

this.y = y;

}

//перегрузка операции -:

public static double operator - (Point2D p0, Point2D p1)

{

return Math.Sqrt((p0.x-p1.x)*(p0.x-p1.x) + (p0.y-p1.y)*(p0.y-p1.y));

}

}

//класс с точкой вызова:

class Program

{

public static void Main()

{

double x, y;

//ввод координат точек:

Console.Write("x0 = ");

x0 = Convert.ToDouble(Console.ReadLine());

Console.Write("y0 = ");

y0 = Convert.ToDouble(Console.ReadLine());

Console.Write("x1 = ");

x1 = Convert.ToDouble(Console.ReadLine());

Console.Write("y1 = ");

y1 = Convert.ToDouble(Console.ReadLine());

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

Point2D p0 = new Point2D(x0, y0);

Point2D p1 = new Point2D(x1, y1);

//вычисление расстояния:

double d = p0 – p1;

//вывод результата:

Console.WriteLine("Расстояние равно: " + d);

}

}

Задачи для самостоятельного решения

В задачах из раздела 2 перегрузить на выбор одну из операций.

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

Ознакомиться с материалом по данной теме с помощью источников [1, с.172] или [2, с.200].

Пример выполнения задания

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

using System;

//класс точки на плоскости (базовый):

class Point2D

{

//поля, которые видны в производных классах:

protected double x, y;

//конструктор:

public Point2D(double x, double y)

{

this.x = x;

this.y = y;

}

//перегрузка операции -:

public static double operator - (Point2D p0, Point2D p1)

{

return Math.Sqrt((p0.x-p1.x)*(p0.x-p1.x) + (p0.y-p1.y)*(p0.y-p1.y));

}

}

//класс точки в пространстве (производный):

class Point3D: Point2D

{

//поле:

double z;

//конструктор производного класса:

public Point3D(double x, double y, double z): base (x, y)

{

this.z = z;

}

//метод производного класса:

public double Metric(Point3D p)

{

return Math.Sqrt ((z - p.z) * (z - p.z) + (x - p.x) * (x - p.x) +

(y - p.y) * (y - p.y));

}

}

//класс с точкой вызова:

class Program

{

public static void Main()

{

double x, y;

//ввод координат точек:

Console.Write("x0 = ");

x0 = Convert.ToDouble(Console.ReadLine());

Console.Write("y0 = ");

y0 = Convert.ToDouble(Console.ReadLine());

Console.Write("z0 = ");

z0 = Convert.ToDouble(Console.ReadLine());

Console.Write("x1 = ");

x1 = Convert.ToDouble(Console.ReadLine());

Console.Write("y1 = ");

y1 = Convert.ToDouble(Console.ReadLine());

Console.Write("z1 = ");

z1 = Convert.ToDouble(Console.ReadLine());

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

Point3D p0 = new Point3D(x0, y0, z0);

Point3D p1 = new Point3D(x1, y1, z1);

//вывод результата:

Console.WriteLine("Расстояние равно: " + p0.Metric(p1));

}

}

Задачи для самостоятельного решения:

Задание 1.

Задание 2.

Задание 3.

Задание 4.

Задание 5.

Задание 6.

Задание 7.

Задание 8.

Задание 9.

Задание 10.

Задание 11.

Задание 12.

Задание 13.

Задание 14.

Задание 15.

Задание 16.

Задание 17.

Задание 18.

Задание 19.

Задание 20.

Учебно-методическое и информационное обеспечение дисциплины:

а) основная литература

1. Бужан В.В. Объектно-ориентированное программирование: учебно-методическое пособие для студентов очной и заочной форм обучения направления подготовки 230100.62 – Информатика и вычислительная техника. – Краснодар: ИМСИТ, 2013. – 52 с.

2. Голицина О.Л., Попов И.И. Программирование на языках высокого уровня. М.: ФОРУМ, 2011. 496 с.

3. Васильев, А.Н. Java: Объектно-ориентированное программирование: базовый курс для магистров и бакалавров. – СПб: ПИТЕР, 2011. – 400 с.

4. Информатика и программирование. Компьютерный практикум: учеб. пособие для вузов / Гуда, А.Н., Бутаков, М.А., Нечитайло, Н.М., Чернов, А.В. – М.: Дашков и К, 2010. – 240 с.

б) дополнительная литература

5. Бужан В.В. Основы программирования в среде Borland C++ Builder. Учебное пособие. — Краснодар.: ЮИМ, 2005. — 109 с.

6. Страуструп Б. Язык программирования Си++: Пер. с англ.— М.: Радио и связь, 2001.— 352 с.

7. Алексеев Е.Р. Программирование на Visual C++ и Turbo C++ Explorer. М.:НТ Пресс, 2007. – 352 с.

8. Пахомов Б.Н. C/C++ и MS Visual C++ 2005 для начинающих. – СПб.: БХВ-Петербург, 2007. – 464 с.

9. Сергеев А.П., Терен А.Н. Программирование в Microsoft Visual C++ 2005. – М:.Издательский дом «Вильямс», 2006. – 352 с.

10. Хортон А. Visual C++ 2005: Базовый курс – М:. И.Д. «Вильямс», 2007. – 1152 с.

11. Культин Н. C# в задачах и примерах. – СПб.: БХВ-Петербург, 2007. – 240 с.

Доцент, ведущий дисциплину ___________ В.В. Бужан


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: