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

Пример создания отношения ассоциации между классами и объектами




Пример создания отношения наследования между классами и объектами

 

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

 

Листинг 3.1

import java.util.Scanner;

 

// базовыйклассфигура

abstract class Shape

{ protected String type;

public Shape() { }

public Shape(String t) { type = t; }

public String GetShape() { return type; }

public void Move(double x1, double y1) { }

}

// производныйкласстреугольник

class Treug extends Shape

{ private double x, y, z;// длинысторон

public Treug(){ }

public Treug(String t, double x1, double y1, double z1)

{ super (t); x = x1; y = y1; z = z1; }

// перегрузкаметода Move

public void Move(double x1, double y1)

{ String msg = "";

if ((x1 > 0) && (y1 > 0))

msg = "Треугольник передвинули на "

+ x1 + " вправо и на "+ y1 + " вниз";

if ((x1 > 0) && (y1 < 0))

msg = "Треугольник передвинули на "

+ x1 + " вправо и на " + Math. abs (y1) + " вверх";

if ((x1 < 0) && (y1 < 0))

msg = "Треугольник передвинули на " + Math. abs (x1)

+ " влево и на " + Math. abs (y1) + " вверх";

if ((x1 < 0) && (y1 > 0))

msg = "Треугольник передвинули на " + Math. abs (x1)

+ " влево и на " + Math. abs (y1) + " вниз";

System. out. println(type.toUpperCase()+ ". Результат перемещения: "

+ msg);

}

public void Scale(double f)// Масштабирование

{ x *= f; y *= f; z *= f;

String msg = "Новые длины сторон: " + x + " "

+ y + " " + z + " ";

System. out. println(type + ". Результат масштабирования: "

+ msg);

}

public double GetX() { return x; }

public double GetY() { return y; }

public double GetZ() { return z; }

}

// производныйкласскруг

class Circle extends Shape

{ private double x, y, r;

public Circle(){ }

public Circle(String t, double x1, double y1, double r1)

{ super (t); x = x1; y = y1; r = r1; }

public void Move(double x1, double y1)

{ x += x1; y += y1;

String msg = "Новые координаты центра " + x + " " + y;

System. out. println(type + ". Результат перемещения: " + msg);

}

public double GetSquare()// вычислениеплощади

{ return Math. PI * Math. pow (r, 2); }

}

 

 

public class progr

{

public static void main(String[] args)

{

int pr;

double t1, t2, t3, t4, t5, t6;

System. out. println("1 - Задать круг");

System. out. println("2 - Задать треугольник");

Scanner in = new Scanner(System. in);

pr = in.nextInt();

Circle fig1; // окружность

Treug fig2;// треугольник

if (pr == 1)

{ System. out. println("Вв. координату центра x:");

t1 = in.nextDouble();

System. out. println("Вв. координату центра y:");

t2 = in.nextDouble();

System. out. println("Вв. радиус круга:");

t3 = in.nextDouble();

System. out. println("Передвинуть на x:");

t4 = in.nextDouble();

System. out. println("Передвинуть на y:");

t5 = in.nextDouble();

fig1 = new Circle("Окружность", t1, t2, t3);

fig1.Move(t4, t5);

System. out. println(fig1.GetShape()+ ". Площадь: " + fig1.GetSquare());

}

if (pr == 2)

{ System. out. println("Вв. сторону a:");

t1 = in.nextDouble();

System. out. println("Вв. сторону b:");

t2 = in.nextDouble();

System. out. println("Вв. сторону c:");

t3 = in.nextDouble();

System. out. println("Передвинуть на x:");

t4 = in.nextDouble();

System. out. println("Передвинуть на y:");

t5 = in.nextDouble();

System. out. println("Масштаб:");

t6 = in.nextDouble();

fig2 = new Treug("Треугольник", t1, t2, t3);

fig2.Move(t4, t5);

fig2.Scale(t6);

}

}

}

Рисунок 3.1 – Результат выполнения программы

Задание 1

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

 

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

2. Создать класс «Многочлен первой степени». На его основе создать класс «Многочлен степени n» от одной переменной. Написать метод, вычисляющий значение многочлена для заданного аргумента.

3. Создать класс «Издание», хранящий информацию об издательстве(наименование, адрес). На его основе создать класс «Журнал»(номер, название, список статей – массив). Написать метод, возвращающий список авторов статей, В алфавитном порядке.

4. Создать абстрактный класс «Здание» (год постройки, тип: панельное, кирпичное, деревянное). На его основе создать класс «дом» (занимаемая площадь земли, количество квартир). Написать метод, вычисляющий максимальное количество домов, которое можно построить на площади заданного размера с заданным расстоянием между соседними домами.

5. Создать абстрактный класс «Товар» (наименование, цена, дата выпуска). На его основе создать класс «Компьютер» (тип процессора, объём HDD, Наличие встроенного аудио). Написать методы: установка ПО заданного размера в мегабайтах, удаление ПО (при этом занятая память должна «освобождаться»)., вывод списка установленного ПО.

6. Создать абстрактный класс «Товар» (наименование, цена, дата выпуска). На его основе создать класс «Автомобиль» (объём двигателя, расход бензина на 100 км, тип КПП, наличие сигнализации, госномер). Написать метод, определяющий минимальное количество дозаправок, необходимое чтобы проехать заданное расстояние. Количество бензина в начале пути задаёт пользователь в долях от объёма двигателя.

7. Создать абстрактный класс «Товар» (наименование, цена, дата выпуска). На его основе создать класс «Мобильный телефон» (наличие Bluetooth, IR; поддержка mp3, наличие фото/видеокамеры, тип батареи, что закачено). Тип батареи – структура: тип, время подзарядки, время разрядки. Написать методы: закачка информации через Bluetooth/IR, если имеется (выбор Bluetooth/IR осуществляет пользователь); вывод информации о том, что закачено; медод, определяющий сколько раз в неделю надо подзаряжать телефон.

8. Создать класс «Издание», хранящий информацию об издательстве(наименование, адрес). На его основе создать класс «Книга» (название, автор, список рассказов: массив, количество рассказов). Рассказ – структура: название, количество страниц. Написать метод для вывода содержания в алфавитном порядке с указанием номеров страниц; вывод содержания в порядке возрастания количества страниц в рассказе.

9. Создать абстрактный класс «периферийное устройство» (наименование, тип интерфейса). На его основе создать класс «принтер» (тип, количество цветов, разрешение, количество чернил). Написать методы для «отправки на печать» документа, просмотра названия документа, отправленного на печать, вывода состояния принтера (занят/свободен). Написать метод, определяющий количество документов в очереди на печать. Документ – структура: название, количество чернил, необходимое для его печати.

10. Создать абстрактный класс «периферийное устройство» (наименование, тип интерфейса). На его основе создать класс «dial-up модем» (тип, тип интерфейса, поддерживаемый протокол). Написать методы: дозвон до провайдера по заданному телефону; проверка состояния(соединение установлено/нет), сброс соединения, установка режима работы (передача/принятие файла) при установленном соединении.

11. Создать класс «человек» (имя, возраст). На его основе создать класс «Ученик» (номер школы, оценки). Оценки задавать в виде перечисления: отличник/хорошист/балбес. Написать методы: перевод в другую школу, повышение IQ, получение поощрений, получение замечания. Написать метод, понижающий или повышающий IQ ученика на 1 уровень в зависимости от количества замечаний и поощрений.

12. Создать класс «человек» (имя, возраст). На его основе создать класс «Абитуриент» (специальность, баллы по ЕГЭ). Написать метод, сравнивающий балл ЕГЭ с проходным на специальность. Определить, на какие специальности (наименование, проходной балл), он может поступить. Список специальностей хранить в массиве.

13. Создать класс «человек» (имя, возраст). На его основе создать класс «Студент» (специальность, количество долгов, зачётная книжка: массив структур (предмет, оценка)). Написать метод, добавляющий запись в зачётную книжку и, в зависимости от оценки, уменьшающий или увеличивающий количество долгов. Написать метод, печатающий текущее содержимое зачётной книжки.

14. Создать класс «плавсредство» (тип, грузоподъемность). На его основе создать класс «парусный катамаран» (площадь парусности, длина, ширина, максимальная скорость ветра). Написать методы: уменьшение/увеличение площади парусности в зависимости от введённой скорости ветра. Вывод текущей площади парусности, постановка на якорь (при этом парусность становится равной 0).

 

 

Пример создания отношения ассоциации между классами и объектами

 

В листинге 3.2 представлена программа, которая демонстрирует отношение ассоциации (агрегации, композиции) между классами и объектами.

На рис. 3.2.показан результат выполнения программы.

 

Листинг 3.2

// relations3.java

import java.util.*;

Поделиться:





Читайте также:





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



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