|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|
Создание иерархии классов: магазин электротоваров23.02.2019, 18:45. Показов 23674. Ответов 48
Метки нет (Все метки)
Уважаемые форумчане, нужно создать программу. В программе должны присутствовать: иерархия классов с указанием ключевых полей, свойств и методов для предметной области магазин электротоваров. Иерархия классов должна быть такой как на рисунке.
1. В каждом классе должно быть как минимум 3 поля. 2. Изменять значения поля можно только через методы. 3. Реализовать, как минимум 2 метода, в которых бы использовался полиморфизм. 4. В программе должна быть предусмотрена возможность создания экземпляров всех классов (кроме абстрактных) и задания и просмотра соответствующих полей и результатов выполнения методов. Я не прошу (пока ) писать сам код, хочу все сам сделать. Мне нужны названия классов, которые подойдут к этой иерархии по предметной области и их поля. Так как у самого в голову ни одной идеи не лезет.Еще раз повторюсь методы и сам код создания классов не писать (пока что ), хочу все сам сделать.
0
|
|
| 23.02.2019, 18:45 | |
|
Ответы с готовыми решениями:
48
Создание иерархии классов Создание иерархии классов и интерфейсов
|
|
|
||
| 02.03.2019, 05:16 | ||
|
Как они наследуются, как переопределяются и перегружаются методы. Ищите это "Перегрузка и переопределение методов и полей класса."
0
|
||
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|||||||||||||||||||||||||||||||||||||||||
| 03.03.2019, 00:34 [ТС] | |||||||||||||||||||||||||||||||||||||||||
|
Вообщем написал так вот код:
По схеме в шапке темы 1 класс базовый абстрактный.
И если все верно скиньте идею насчет второго метода с полиморфизмом только что-нибудь другое что бы отличался от первого, а то в голову лезут одни похожие методы. И появился еще вопрос захотел сделать цикл как в посте 13, что бы выводились стразу все записи про анализы. Но думается мне что такой цикл в пример не подойдет?
0
|
|||||||||||||||||||||||||||||||||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 03.03.2019, 09:05 | |
|
0
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|
| 03.03.2019, 11:10 [ТС] | |
|
Серьезно, да что опять не так?
![]()
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 03.03.2019, 11:33 | |
|
Владислав_Никол, теперь тебе нужно создать какой-то тестовый класс, в котором будут взаимодействовать экземпляры вышеприведенной иерархии. Вот именно там и можно будет рассматривать полиморфизм. Сейчас ты просто переопределил некоторые методы, но это пока ничего не значит и не проясняет.
0
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
||||||
| 03.03.2019, 18:14 [ТС] | ||||||
|
iSmokeJC, А так у меня есть такой класс.
Вот
Добавлено через 2 минуты Только я не пойму как по вашему примеру в посте №13 сделать цикл.
0
|
||||||
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
||||||
| 03.03.2019, 18:37 | ||||||
тут 2 полиморфизма: 1. Мы оверлоадим (перегружаем) в класс Two метод iter. (название одинаковое, входные параметры разные) 2. в классе Two оверайдим метод print теперь инициализируя переменную типа One, а создав объект типа Two, произойдёт динамическое связывание и вызовется метод из класса Two Добавлено через 1 минуту для чего это нужно. Чтоб даже не зная, как будет реализован метод в наследниках, мы могли его использовать. Java сама свяжет метод динамически. Добавлено через 9 минут Более подробно: допустим написал ты какой-то класс Array для работы с массивом. затем в другом классе у кого-то есть метод, который принимает твой класс к примеру: public void printArray(Array array) { array.print; } допустим через год создадут новый класс, наследник твоего Array class SuperArray extends Array и переопределят твой метод print так вот, человеку, который написал этот метод: public void printArray(Array array) { array.print; } не придётся добавлять новый метод для SupperArray. просто в метод будут передавать так printArray(new SupperArray) и в методе вызовется метод print не класса Array,ауже класса SuperArray Добавлено через 2 минуты P.S. Я не очень хорошо объясняю, но я старался )))
0
|
||||||
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|
| 04.03.2019, 00:28 [ТС] | |
|
ArtemFM, Это вы написали в пример какие могут быть полиморфизмы или камень в мой огород за мой метод с полиморфизмом который я пытался сделать?
![]() Добавлено через 1 минуту Просто мне так пока и не сказали правильно ли я сделал или нет.
0
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|||||||||||
| 04.03.2019, 14:52 [ТС] | |||||||||||
|
Народ создал метод для вывода информации объекта класса.
0
|
|||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 04.03.2019, 15:14 | |
|
Владислав_Никол, вот ты потихоньку и подходишь к осознанию полморфизма...
0
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
||||||||||||||||||||||
| 04.03.2019, 15:44 [ТС] | ||||||||||||||||||||||
|
iSmokeJC, Всмысле? Полиморфизм нужен для того что бы один метод использовался для всех наследуемых классов, скажите что я не прав. При чем тут мой вопрос в посте №29? Моя конечно вина не так объяснил наверно.
У меня в классе есть метод
Добавлено через 10 минут iSmokeJC, К тому же вы так и не сказали правильно ли я сделал метод с полиморфизмом.
0
|
||||||||||||||||||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
||
| 04.03.2019, 16:16 | ||
![]() Фраза - 'метод с полиморфизмом' вообще убийственная. У тебя нет метода, использующего полиморфизм.
0
|
||
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
||||||
| 04.03.2019, 16:24 | ||||||
Patient pt1 = new Patient(55, "Носов Николай Петрович", 34, "мужской", 486469, "ОРВИ"); у тебя есть абстрактный класс PersonPoliclinic вот и объявляй всё типом PersonPoliclinic PersonPoliclinic pt1 = new Patient(55, "Носов Николай Петрович", 34, "мужской", 486469, "ОРВИ"); PersonPoliclinic su1 = new Surgeon(365, "Машков Дмитрий Александрович", 43, "мужской", 60000, "Вторая", "Глазной хирург", 34, "25 лет");
0
|
||||||
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|
| 04.03.2019, 16:43 [ТС] | |
|
ArtemFM, Прошу если не трудно покажите метод с использованием полиморфизма с моей иерархии классов. Я хотя бы пойму где я так туплю, а второй метод я сам попробую реализовать. А то на простых примерах даже в учебниках с классами животных там понятно, но пытаюсь сделать у себя и выгляжу полным дЭбилом.
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 04.03.2019, 17:05 | |
Сообщение было отмечено Владислав_Никол как решение
Решение
смотри суть в чём. Вот у тебя есть абстрактный класс PersonPoliclinic
остальные классы ты наследуешь от него... допустим, от него наследуется Doctor и Pacient. Ты в абстрактном классе можешь реализовать какой-то метод, к примеру... и допустим он будет работать одинаково для Doctor и Patcient. Следовательно ты его реализуешь только в абстрактном классе и всё... переопределять его не нужно, ибо он работает одинаково и для Doctor и Patcient. Теперь двигаемся дальше. Ну допустим ты сделал класс Terapevt. И вдруг ты понял, что именно для терапевта общий метод в абстрактном классе не подходит... И ты решил его переопределить и реализовать его по другому. Ок, идём дальше. затем ты создал класс Хирург. Допустим ты подумал и решил,что у Хирурга общего больше сТерапевтом, чем с Доктором и метод, который ты переопределил в Терапевте как раз подходит и для Хирурга... Следовательно ты Хирурга наследуешь от Терапевта и не переопределяешь метод, реализованный в Терапевте ибо он и так классно работает... Теперь подошли кглавному Добавлено через 3 минуты когда ты создаёшь классы, ты объявляешь переменную как можно ниже по иерархии у тебя сделано как: Хирург хирург = нью Хирург, Доктор доктор = нью Доктор. Так ты не добьёшься полиморфизма, ибо ты просто создал класс и объявлил от одного класса А вот теперь самое интересное Если ты сделаешь так: Абстрактный класс пациент = нью Пациент; Абстрактный класс доктор = нью Доктор; Абстрактный класс терапевт = нью Терапевт; что это даст? пациент, доктор и терапевт будут типа абстрактный класс Добавлено через 1 минуту значит у этих переменных будут доступны все методы из Абстрактного класса... Мы помним, что у нас идёт иерархия: Абстрактный класс <- Терапевт <- Хирург Мы помним, что в Хирурге нет метода, который переопределён в Терапевте, да и не к чему, реализация в Терапевте подходит и для Хирурга Добавлено через 2 минуты Так вот, если ты вызовешь у переменной хирург этот метод, то что сделает Java. Она посмотрит таблицу наследников и зайдёт в хирург. Увидит, что метод там не риализован, спустится на иерархию ниже - это терапевт. Ага, там есть этот метод. Вот его она и запустит. Допустим и там не было бы этого метода, тогда Джава спустилась ещё ниже к родителю (или поднялась, не знаю как правильнее сказать) и в итоге, если он нигде не переопределён, то запустила по цепочке из того класса, гдеон реализован Добавлено через 46 секунд А если бы ты создал объект Хирург = нью Хирург, ты б даже этот метод не смог использовать, ибо его там и нет.
1
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|
| 05.03.2019, 00:27 [ТС] | |
|
ArtemFM, Подожди по задумке у меня класс хирург не наследуется от терапевта, они оба наследуются от класса доктор. Вот схема.
0
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|
| 05.03.2019, 00:31 [ТС] | |
|
И абстрактных класса у меня два персоны поликлиники и доктор.
Добавлено через 3 минуты Сейчас попробую переварить вашу инфу.
0
|
|
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 05.03.2019, 15:00 | |
|
я тебе пример приводил. Не смотрел как у тебя сделано, а просто пример из головы )
0
|
|
|
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
|
|||||||||||
| 05.03.2019, 19:42 [ТС] | |||||||||||
|
ArtemFM, Все теперь я понял!
Вот сделал так:
Теперь метод Analysis, который переопределяется в классах хирург и терапевт имеет полиморфизм?
Да и если можно подкинте идею метода с полиморфизмом по перегрузке. Фантазия подводит.
0
|
|||||||||||
|
746 / 493 / 285
Регистрация: 10.09.2015
Сообщений: 1,530
|
|
| 05.03.2019, 22:09 | |
|
Теперь да ))) Молодец )
Добавлено через 1 минуту И еще вопрос как тогда вызывать методы, которые чисто присуще например классу Пациент? Никак....либо его объявить в классе PersonPolyclinic либо создать пациента от пациента, но тогда ты потеряешь полиморфизм... Добавлено через 5 минут зачем тебе номер терапевта и номер доктора? Смысл в каждом классе это писать??? пусть у всех номер будет общий и он будет в PersonPolyclinic потому что иначе ты никак к ним не получишь доступ учёная степень так же у всех поле общее по поводу отработанное время так же подходит и для хирурга и для терапевта можешь у терапевта сделать поле - кол-во принятых пациентов, а у хирурга - кол-во операций... и сделать метод общий для всех info или переопределить toString, где вернёшь эту информацию
0
|
|
| 05.03.2019, 22:09 | |
|
Отображение иерархии классов Простой пример иерархии классов, демонстрирующий полиморфный вызов метода Создание иерархии классов Создание иерархии классов Создание иерархии классов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|