Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/120: Рейтинг темы: голосов - 120, средняя оценка - 4.89
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125

Создание иерархии классов: магазин электротоваров

23.02.2019, 18:45. Показов 23321. Ответов 48
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане, нужно создать программу. В программе должны присутствовать: иерархия классов с указанием ключевых полей, свойств и методов для предметной области магазин электротоваров. Иерархия классов должна быть такой как на рисунке.

1. В каждом классе должно быть как минимум 3 поля.
2. Изменять значения поля можно только через методы.
3. Реализовать, как минимум 2 метода, в которых бы использовался
полиморфизм.
4. В программе должна быть предусмотрена возможность создания
экземпляров всех классов (кроме абстрактных) и задания и просмотра
соответствующих полей и результатов выполнения методов.

Я не прошу (пока) писать сам код, хочу все сам сделать. Мне нужны названия классов, которые подойдут к этой иерархии по предметной области и их поля. Так как у самого в голову ни одной идеи не лезет.

Еще раз повторюсь методы и сам код создания классов не писать (пока что ), хочу все сам сделать.
Миниатюры
Создание иерархии классов: магазин электротоваров  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.02.2019, 18:45
Ответы с готовыми решениями:

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

Создание иерархии классов и интерфейсов
Помогите пожалуйста, нужно написать курсач на тему "создание иерархии классов и интерфейсов в предметной области животные". Я не знаю...

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

48
10 / 0 / 2
Регистрация: 12.10.2015
Сообщений: 62
23.02.2019, 20:07
Включайте фантазию! Здесь проблема не в том что в голову ничего не лезет, а вам просто лень. За то время пока вы всё это печатали можно уже было придумал 10 раз
Пример:
Класс1 - это сам магазин електро-товаров, например основное отделение.(или абстрактный класс, если вы знаете что это)
Класс2 - магазин электротоваров в вашей стране.
Класс 3 -магазин за границей.
Класс4 и Класс5 - магазины в вашей стране и в разных областях.
Поля: имя магазина, расположение, суммарная цена всех товаров, валюта которой платят, оборот.... и так далее. Методы для полиморфизма: String который будет возвращать информацию про магазин, ясно что его надо переопределять так как у каждого магазина своя информация. Второй метод может быть подсчет оборота...

Цитата Сообщение от Владислав_Никол Посмотреть сообщение
2. Изменять значения поля можно только через методы.
Геттеры и сеттеры соответственно.

Цитата Сообщение от Владислав_Никол Посмотреть сообщение
4. В программе должна быть предусмотрена возможность создания
экземпляров всех классов (кроме абстрактных) и задания и просмотра
соответствующих полей и результатов выполнения методов.
Это то что нужно сделать, как я понял!
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
23.02.2019, 23:38  [ТС]
Цитата Сообщение от Matanoid Посмотреть сообщение
(или абстрактный класс, если вы знаете что это)
Разумеется.
Цитата Сообщение от Matanoid Посмотреть сообщение
а вам просто лень.
Нет, правда мне вот даже какой вы пример дали в голову не пришел бы вообще. Я вот даже сейчас читаю ваш пример и пока еще толком в него не врубился если честно. Но спасибо за помощь.
0
10 / 0 / 2
Регистрация: 12.10.2015
Сообщений: 62
23.02.2019, 23:45
Владислав_Никол, писал на скорую руку и может не совсем "лаконично", логический смысл наследование это то, что наследник расширяет базовый класс(в жизни, как бы делает его более конкретным и специфичным). Тут же с магазинами, чем ниже класс в иерархии тем специфичные есть ваш магазин(в данном случае речь идет о местонахождении, находится в стране или за страной, или более узко уже в какой то конкретной области).
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
27.02.2019, 18:54  [ТС]
Народ вообщем тему задания мне изменили. Сделал иерархию поликлиники с такими классами
1. Абстрактный класс Персоны поликлиники
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Абстрактный класс персоны поликлиники
public abstract class PersonPolyclinic {
    private String Fio;// ФИО 
    private int age;// Возраст
    private String sex;// Пол
    
    public PersonPolyclinic(String Fio, int age, String sex) {
        this.Fio = Fio;
        this.age = age;
        this.sex = sex;
    }
    
    public String getFio() {
        return Fio;
    }
    
    public void setFio(String Fio) {
        this.Fio = Fio;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
    
    public String getSex() {
        return sex;
    }
    
    public void setNumber(String sex) {
        this.sex = sex;
    }
}
2. Абстрактный класс Работники. (Вот здесь не знаю может ли абстрактный класс наследоваться от абстрактного правильно ли это?)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public abstract class Worker extends PersonPolyclinic {
    private int numberWorker;// Номер работника
    private int salary;// Зарплата
    private int workExperience;// Трудовой стаж
    
    public Worker(String Fio, int age, String sex, int numberWorker, int salary, int workExperience) {
        super(Fio, age, sex);
        this.numberWorker = numberWorker;
        this.salary = salary;
        this.workExperience = workExperience;
    }
    
    public int getNumberWorker() {
            return numberWorker;
    }
     
    public void setNumberWorker(int numberWorker) {
            this.numberWorker = numberWorker;
    }
     
    public int getSalary() {
            return salary;
    }
        
    public void setSalary(int salary) {
            this.salary = salary;
    }
    
    public int getWorkExperience() {
        return workExperience;
    }
    
    public void setWorkExperience(int workExperience) {
        this.workExperience = workExperience;
    }
}
3. Класс Пациенты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Patient extends PersonPolyclinic {
    private int numberPatient;// Номер пациента
    private int numberDoctor;// Номер доктора
    private String diagnosis;// Диагноз
 
    public Patient(int numberPatient, String Fio, int age, String sex, int numberDoctor, String diagnosis) {
        super(Fio, age, sex);
        this.numberPatient = numberPatient;
        this.numberDoctor = numberDoctor;
        this.diagnosis = diagnosis;
 
    }
    
    public int getNumberPatient() {
            return numberPatient;
    }
     
    public void setNumberPatient(int numberPatient) {
            this.numberPatient = numberPatient;
    }
    
    public int getNumberDoctor() {
        return numberDoctor;
    }
 
    public void setNumberDoctor(int numberDoctor) {
        this.numberDoctor = numberDoctor;
    }
    
    public String getDiagnosis() {
        return diagnosis;
    }
    
    public void setDiagnosis(String diagnosis) {
        this.diagnosis = diagnosis;
    }
}
4. Класс медперсонал.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MedicalStaff extends Worker{
    private String education;// Образование
    private boolean student;// Является ли работник студентом?
    
    public MedicalStaff(String Fio, int age, String sex, int numberWorker,
            int salary, int workExperience, String education, boolean student) {
        super(Fio, age, sex, numberWorker, salary, workExperience);
        this.education = education;
        this.student = student;
    }
    
    public String getEducation() {
        return education;
    }
 
    public void setEducation(String education) {
        this.education = education;
    }
    
    public boolean getStudent() {
        return student;
    }
 
    public void setStudent(boolean student) {
        this.student = student;
    }
}
5. Класс доктор.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Doctor extends Worker {
    private String specialization;// Специализация
    private int numberPatient;// Номер принятого пациента
    private String category;// Категория
    
    public Doctor(String Fio, int age, String sex, int numberWorker,
            int salary, int workExperience, String specialization, int numberPatient, String category) {
        super(Fio, age, sex, numberWorker, salary, workExperience);
        this.specialization = specialization;
        this.numberPatient = numberPatient;
        this.category = category;
    }
    
    public String getSpecialization() {
        return specialization;
    }
    
    public void setSpecialization(String specialization) {
        this.specialization = specialization;
    }
    
    public int getNumberPatient() {
        return numberPatient;
    }
    
    public void setNumberPatient(int numberPatient) {
        this.numberPatient = numberPatient;
    }
    
    public String getCategory() {
        return category;
    }
    
    public void setCategory(String category) {
        this.category = category;
    }
}
Во-первых как на ваш взгляд нормальная иерархия получилась или идиотская?
Во-вторых по поводу задания
Цитата Сообщение от Владислав_Никол Посмотреть сообщение
Изменять значения поля можно только через методы.
правильно ли я понял что для это используется такие сеттеры
Java
1
2
3
    public void setWorkExperience(int workExperience) {
        this.workExperience = workExperience;
    }
или данный код чисто дает доступ к полю, а что бы его изменять нужно как то по другому написать? (Я запутался)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
27.02.2019, 19:00
Цитата Сообщение от Владислав_Никол Посмотреть сообщение
правильно ли я понял что для это используется такие сеттеры
да
Цитата Сообщение от Владислав_Никол Посмотреть сообщение
может ли абстрактный класс наследоваться от абстрактного
да
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
27.02.2019, 19:03  [ТС]
И еще хотелось бы спросить насчет полиморфизма это ведь использование одинакового метода в классах, но переопределяя его. И вот не могу понять какие два метода использовать к этой иерархии с полиморфизмом?
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
27.02.2019, 19:50
Владислав_Никол, можно переопределить:
1) public String toString() Object'а для вывода публичной информации;
2) public String getPrivateInfo() для вывода приватной информации.
0
 Аватар для vvm28
771 / 538 / 67
Регистрация: 22.12.2013
Сообщений: 2,497
Записей в блоге: 26
28.02.2019, 11:42
Цитата Сообщение от Владислав_Никол Посмотреть сообщение
для предметной области магазин электротоваров.
Для магазина ключевыми будут слова "товар" "оптовая продажа" "скидка" "набор товаров" "распродажа" "завод поставщик"
"склад" "движение товара", "брак, испорченный товар" "лучше продающийся товар", "грузчик испортил товар"
В основном иерархия объектов будет относиться не к предметной области электротоваров, а к предметной области магазина,
логистике и продаже.

Добавлено через 14 минут
Рекомендую книгу Майкла Моргана "Руководство разработчика".
Он хорошо описывает объектно-ориентированный анализ.
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
28.02.2019, 18:45  [ТС]
Люди нужна помощь по заданию нужно создать два метода с полиморфизмом. Вот вроде бы сделал:
1. метод выводит всю инфу о пациенте. (Надеюсь я правильно понял суть полиморфизма?)
Java
1
2
3
4
5
6
7
8
public void Info() {
        System.out.println("Список пациентов поликлиники:" + "\n" + "Номер пациента: " + getNumberPatient() + ", ФИО: " + getFio() + ", возраст: " + getAge() + ", пол: " + getSex() + ", диагноз: " + getDiagnosis());
    }
public static void main(String[] args) {
        Patient pt1 = new Patient(1,"Носов Николай Петрович",34,"мужской",4,"ОРВИ");
        Patient pt2 = new Patient(2,"Кротов Михаил Николаевич",25,"мужской",6,"Бронхит");
        
        pt1.Info();
2. Метод хочу что бы выводилось количество докторов с у которых определенная специализация. (Опять же если я правильно понял суть полиморфизма). Но никак не пойму как это реализовать.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.02.2019, 18:54
Цитата Сообщение от Владислав_Никол Посмотреть сообщение
Вот вроде бы сделал
Полиморфизма тут вроде бы нет
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
28.02.2019, 19:02  [ТС]
Да блин я никак не врублюсь в полиморфизм этот. Думал понял ан нет.
iSmokeJC, Да я и сам уже понял что это простой метод, а полиморфизмом тут и не пахнет. Буду думать дальше.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.02.2019, 19:12
Владислав_Никол, вот тебе простой пример
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public interface Больной {
    void info();
}
 
public class СреднеБольной implements Больной {
    @Override
    public void info() {
        System.out.println("Грипп");
    }
}
 
public class ЛегкоБольной implements Больной {
    @Override
    public void info() {
        System.out.println("Мигрень");
    }
}
 
public class ТяжелоБольной implements Больной{
 
    @Override
    public void info() {
        System.out.println("Перелом основания черепа");
    }
}
 
 
public class Cyber {
 
    public static void main(String[] args) {
        List<Больной> списокБольных = new ArrayList<>();
 
        списокБольных.add(new ТяжелоБольной());
        списокБольных.add(new ЛегкоБольной());
        списокБольных.add(new СреднеБольной());
 
       for (Больной некто: списокБольных) {
            некто.info();
        }
 
 
    }
}
Bash
1
2
3
Перелом основания черепа
Мигрень
Грипп
Добавлено через 2 минуты
Владислав_Никол, обрати внимание на цикл .

Добавлено через 1 минуту
Видишь - в цикле перебираются объекты типа Больной, и неважно какие там больные. Главное, что у них всех точно есть метод info(), прописанный в интерфейсе.
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
01.03.2019, 01:07  [ТС]
iSmokeJC, Спасибо вроде бы теперь понял. Только вот для моих классов какие методы с полиморфизмом использовать пока не придумал.

Добавлено через 3 минуты
Это получается мне нужно создать какие-нибудь два метода, которые будут использовать все классы. А методы эти получается нужно прописывать в самом первом базовом классе так?
0
 Аватар для vvm28
771 / 538 / 67
Регистрация: 22.12.2013
Сообщений: 2,497
Записей в блоге: 26
01.03.2019, 12:32
Владислав_Никол, В упрощенном случае реализация полиморфизма:
Придумываете общий класс, например Доктор и наследуете от него более специфичные профессии.
Терапевт, Фрактолог, Логопед, Гинеколог, Акушер, Хирург... и тд.
Складываете всех в кучу, например в массив и вызваете метод для каждого элемента массива.
Один и тот же метод будет у всех специфических профессий, но работать он будет по разному.

Метод может быть сдать такие-то анализы, или доктор говорит.
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
01.03.2019, 13:31  [ТС]
vvm28, Да но мне именно надо под схему иерархии. Просто от одного базового класса натыкать других классов не выйдет. Хотя ваше замечание дельное сейчас подумаю.
0
 Аватар для vvm28
771 / 538 / 67
Регистрация: 22.12.2013
Сообщений: 2,497
Записей в блоге: 26
01.03.2019, 14:59
Владислав_Никол, если прямо вот под схему, тогда
Хирург extends Доктор
ПомощникХирурга1 extends Хирург
ПомощникХирурга2 extends Хирург

Добавлено через 4 минуты
Немного неправильно.
ГлазнойХирург extends Хирург
СердечныйXирург extends Хирург

Поскольку они не помощники, а более узкая специализация.
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
01.03.2019, 22:21  [ТС]
vvm28, Скажем так вот иерархия получается

1. Абстрактный класс Доктор поля - фио, номер доктора, пол, возраст. (Это минимум)
2. класс Хирург extends Доктор
3. класс какой можно сделать класс наследуемый от доктора? я например сделал, следуя вашей логике, класс терапевт.
4. ГлазнойХирург extends Хирург
5. СердечныйXирург extends Хирург

Но вот прикол в том что мне нужно что бы в каждом классе было как минимум по 3 поля присущих именно каждом классу. Сможете подсказать? У меня все поля в голову лезут, которые подходят всем классам. А индивидуально к каждому классу подобрать не могу.

Пробовал даже такую иерархию.

1. абстрактный персоны поликлиники- фио, пол, возраст.
2. класс Доктор extends ПерсоныПолклиники - номер доктора, зарплата, категория.
3. класс Пациент extends ПерсоныПолклиники - тут поля легко придумать.
4. класс Хирург extends Доктор - специализация, кол-во операций, кол-во успешных операций.
5. класс Терапевт extends Доктор - вот тут какие придумать поля присуще именно этому классу не знаю.
0
 Аватар для vvm28
771 / 538 / 67
Регистрация: 22.12.2013
Сообщений: 2,497
Записей в блоге: 26
02.03.2019, 00:35
Ну я имел в ввиду что-то типа.
СердечныйXирург extends Хирург implements ПерсоналПоликлиники
Вы напишите код, протестируйте. Пусть будет полей не по три.
Пусть хотя бы одно поле. Но вся конструкция чтобы работала.
Вы потом придумаете хоть сто полей.

ПерсоналПоликлиники может содержать дату поступления на работу, оклад, стаж и тд. все что присуще персоналу.
0
4 / 1 / 0
Регистрация: 14.02.2017
Сообщений: 125
02.03.2019, 00:55  [ТС]
А такой вопрос метод с полиморфизмом должен охватывать все классы в иерархии или нет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2019, 00:55
Помогаю со студенческими работами здесь

Отображение иерархии классов
Посоветуйте, пожалуйста прогу для отображения java-классов в виде диаграммы. (ничего не нагуглил, но у меня когда-то был диск с прогами для...

Простой пример иерархии классов, демонстрирующий полиморфный вызов метода
Приведите пример простой иерархии классов, демонстрирующий полиморфный вызов метода (работа с классом-наследником через ссылку на базовый...

Создание иерархии классов
Создать иерархию классов. воздушный шар--дирижабль--самолет Характеристики шара: скорость движения, направление движения (угол 0..359...

Создание иерархии классов
Создать следующую иерархию классов: Класс CL1 содержит в себе: -Элементы-данные доступные в CL2, но не доступные в CL3 -Класс...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru