|
2 / 2 / 0
Регистрация: 23.12.2012
Сообщений: 161
|
||||||
В чём моя ошибка?17.11.2013, 14:00. Показов 806. Ответов 6
Метки нет (Все метки)
Необходимо построить диаграмму классов UML и создать программу, реализующую основные фундаментальные свойства объектно-ориентированного программирования: инкапсуляцию, отношение наследования между классами и объектами, а также полиморфизм. В базовом и производном классах определить конструкторы с параметрами для инициализации объектов. Для хранения классов создать пакет.
Задание:Создать класс «Отрезок», содержащий информацию о конечных точках. На его основе создать класс «вектор». Написать методы, определяющий, являются ли отрезки параллельными, а векторы – сонаправленными.
Exception in thread "main" Java Result:1),мне через NetBeans надо сделать.
0
|
||||||
| 17.11.2013, 14:00 | |
|
Ответы с готовыми решениями:
6
В чем моя ошибка? Инкапсуляция. Наследование. Полиморфизм. Не понимаю в чем моя ошибка в чём ошибка? |
|
12 / 12 / 1
Регистрация: 05.04.2012
Сообщений: 127
|
||||||
| 18.11.2013, 00:50 | ||||||
|
У вас точки входа программы нет, т.е. вызова метода main.
0
|
||||||
|
2 / 2 / 0
Регистрация: 23.12.2012
Сообщений: 161
|
|
| 18.11.2013, 07:59 [ТС] | |
|
package point;
class Point { public static void main(String[] args) { } final public double x; final public double y; final public double z; public Point(Point point) { x = point.x; y = point.y; z = point.z; } public Point(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } } class Segment { /** координаты отрезка */ protected Point begin; protected Point end; /** конструктор по умолчанию */ Segment() { begin = new Point(0.0, 0.0, 0.0); end = new Point(0.0, 0.0, 0.0); } /** конструктор с входными параметрами (координатами концов отрезка) */ Segment(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end) { begin = new Point(x_begin, y_begin, z_begin); end = new Point(x_end, y_end, z_end); } Segment(Point begin, Point end) { this.begin = begin; this.end = end; } /** конструктор создающий копию объекта */ Segment(Segment segment) { this(segment.begin, segment.end); } /** отрезки параллельны? */ public boolean isParallel(Segment s1, Segment s2) { if (s1.begin.x - s1.end.x == s2.begin.x - s2.end.x) { if ((s1.begin.y - s1.end.y == s2.begin.y - s2.end.y) || ((s1.begin.z - s1.end.z) / (s1.begin.y - s1.end.y) == (s2.begin.z - s2.end.z) / (s2.begin.y - s2.end.y))) { return true; } else { return false; } } else { if (s1.begin.y - s1.end.y == s2.begin.y - s2.end.y) { if ((s1.begin.z - s1.end.z) / (s1.begin.x - s1.end.x) == (s2.begin.z - s2.end.z) / (s2.begin.x - s2.end.x)) { return true; } else { return false; } } else { if (((s1.begin.y - s1.end.y) / (s1.begin.x - s1.end.x) == (s2.begin.y - s2.end.y) / (s2.begin.x - s2.end.x)) && ((s1.begin.z - s1.end.z) / (s1.begin.x - s1.end.x) == (s2.begin.z - s2.end.z) / (s2.begin.x - s2.end.x))) { return true; } else { return false; } } } } } class Vector extends Segment { private int sign(double a) { if (a < 0) { return -1; } if (a > 0) { return 1; } return 0; } Vector() { } /** конструктор с входными параметрами (координатами концов вектора) */ Vector(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end) { begin = new Point(0, 0, 0); end = new Point(x_end - x_begin, y_end - y_begin, z_end - z_begin); } Vector(Point begin, Point end) { this.begin = new Point(0, 0, 0); this.end = new Point(end.x - begin.x, end.y - begin.y, end.z - begin.z); } /** конструктор создающий копию объекта */ Vector(Vector vector) { this(vector.begin, vector.end); } public boolean isCollinear(Vector v1, Vector v2) { if (isParallel(v1, v2) && sign(v1.end.x) == sign(v2.end.x) && sign(v1.end.y) == sign(v2.end.y) && sign(v1.end.z) == sign(v2.end.z)) { return true; } else { return false; } } } Но почему нельзя вводить свои данные,как на картинки?Чтобы программа выполняла работу?
0
|
|
|
12 / 12 / 1
Регистрация: 05.04.2012
Сообщений: 127
|
|||||||||||||||||||||
| 18.11.2013, 10:35 | |||||||||||||||||||||
|
Потому что в точке входа программе ничего на выполнение не отправлено, вот она сразу и завершается.
Смотрите, я вам приведу пример для показа работы проверки параллельности линий, на её основе вы проделаете тоже самое с векторами. Будут проблемы, пишите сюда. И так, сами классы ещё раз, которые у вас: Point Кликните здесь для просмотра всего текста
Segment Кликните здесь для просмотра всего текста
Vector Кликните здесь для просмотра всего текста
Обратите внимание, что в классе Segment метод isParallel мы сделали статическим (static), нужно для того, что бы мы могли просто вызывать метод и передавать ему два отрезка. Примечание под спойлером Кликните здесь для просмотра всего текста
Стоило сделать так, что бы метод принимал только одну линию и сравнивал её с координатами того отрезка, у которого этот метод вызывается. Теперь вы создаете ещё один класс, с названием Main и его код будет следующий:
0
|
|||||||||||||||||||||
|
2 / 2 / 0
Регистрация: 23.12.2012
Сообщений: 161
|
|
| 18.11.2013, 11:13 [ТС] | |
|
MoonGuard, Спасибо за программу,но всё равно ошибку выдаёт мне на NetBeans надо написать
и где public class Main { , public не надо. package point; class Point { final public double x; final public double y; final public double z; public Point(Point point) { x = point.x; y = point.y; z = point.z; } public Point(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } } class Segment { /** координаты отрезка */ protected Point begin; protected Point end; /** конструктор по умолчанию */ Segment() { begin = new Point(0.0, 0.0, 0.0); end = new Point(0.0, 0.0, 0.0); } /** конструктор с входными параметрами (координатами концов отрезка) */ Segment(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end) { begin = new Point(x_begin, y_begin, z_begin); end = new Point(x_end, y_end, z_end); } Segment(Point begin, Point end) { this.begin = begin; this.end = end; } /** конструктор создающий копию объекта */ Segment(Segment segment) { this(segment.begin, segment.end); } /** отрезки параллельны? */ public static boolean isParallel(Segment s1, Segment s2) { if (s1.begin.x - s1.end.x == s2.begin.x - s2.end.x) { if ((s1.begin.y - s1.end.y == s2.begin.y - s2.end.y) || ((s1.begin.z - s1.end.z) / (s1.begin.y - s1.end.y) == (s2.begin.z - s2.end.z) / (s2.begin.y - s2.end.y))) { return true; } else { return false; } } else { if (s1.begin.y - s1.end.y == s2.begin.y - s2.end.y) { if ((s1.begin.z - s1.end.z) / (s1.begin.x - s1.end.x) == (s2.begin.z - s2.end.z) / (s2.begin.x - s2.end.x)) { return true; } else { return false; } } else { if (((s1.begin.y - s1.end.y) / (s1.begin.x - s1.end.x) == (s2.begin.y - s2.end.y) / (s2.begin.x - s2.end.x)) && ((s1.begin.z - s1.end.z) / (s1.begin.x - s1.end.x) == (s2.begin.z - s2.end.z) / (s2.begin.x - s2.end.x))) { return true; } else { return false; } } } } } class Vector extends Segment { private int sign(double a) { if (a < 0) { return -1; } if (a > 0) { return 1; } return 0; } Vector() { } /** конструктор с входными параметрами (координатами концов вектора) */ Vector(double x_begin, double y_begin, double z_begin, double x_end, double y_end, double z_end) { begin = new Point(0, 0, 0); end = new Point(x_end - x_begin, y_end - y_begin, z_end - z_begin); } Vector(Point begin, Point end) { this.begin = new Point(0, 0, 0); this.end = new Point(end.x - begin.x, end.y - begin.y, end.z - begin.z); } /** конструктор создающий копию объекта */ Vector(Vector vector) { this(vector.begin, vector.end); } public boolean isCollinear(Vector v1, Vector v2) { if (isParallel(v1, v2) && sign(v1.end.x) == sign(v2.end.x) && sign(v1.end.y) == sign(v2.end.y) && sign(v1.end.z) == sign(v2.end.z)) { return true; } else { return false; } } } class Main { public static void main(String[] args) { //Точки для первого отрезка Point a1 = new Point(2,2,0); Point b1 = new Point(2,5,0); //Точки для второго отрезка Point a2 = new Point(5,2,0); Point b2 = new Point(5,5,1); //На основе этих точек создаем отрезки (они должны быть параллельны) Segment firstLine = new Segment(a1,b1); Segment secondLine = new Segment(a2, b2); //Переменная для хранения результата. Обратите внимание, что в классе Segment пришлось метод проверки объявить static boolean parallel = false; parallel = Segment.isParallel(firstLine, secondLine); System.out.println(parallel); } }
0
|
|
|
2 / 2 / 0
Регистрация: 23.12.2012
Сообщений: 161
|
|
| 18.11.2013, 11:14 [ТС] | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 23.12.2012
Сообщений: 161
|
|
| 18.11.2013, 14:33 [ТС] | |
|
MoonGuard, Ему isParallel не нравится
0
|
|
| 18.11.2013, 14:33 | |
|
Помогаю со студенческими работами здесь
7
В чём ошибка? в чём ошибка?
В чём ошибка? Не пойму в чём ошибка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|