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

Прототип

19.10.2018, 19:24. Показов 1189. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня суперкласс Musicalinstrument и подклассы wind/stringed/shock, как здесь можно реализовать прототип копирования? Пробовал и даже нужно через метод clone(), не получается, не пойму как

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Main.java
package com.company;
import java.util.Objects;
class MusicalInstrument {
 
    private String composition;
    private int year;
    private String types;
    private String sequence;
 
    MusicalInstrument(String composition, String types, int year, String sequence) {
        this.composition = composition;
        this.types = types;
        this.year = year;
        this.sequence = sequence;
    }
 
    String getItem() {
        return composition;
    }
 
    String getPrice() {
        return sequence;
    }
 
    int getManufacturer() {
        return year;
    }
 
    String getModel() {
        return types;
    }
 
 
    public String toString() {
        return ("Произведение: " + composition + "\n" +
                "Год: " + year + "\n" +
                "Виды музыкальных инструментов: " + types + "\n" +
                "Последовательность: " + sequence);
    }
 
    public static void main(String[] args) {
        MusicalInstrument m1 = new MusicalInstrument("Симфония № 1 (Ле Флем)",
                "Clarinets, flute, trumpets",
                1908,
                "Flute, clarinets, trumpets");
        System.out.println(m1);
    }
}
 
Wind.java
package com.company;
 
class Wind extends MusicalInstrument {
 
    Wind(String composition, String types, int year, String sequence) {
        super(composition, types, year, sequence);
    }
 
 
    public static void main(String[] args) {
        MusicalInstrument Wind = new Wind("Симфония № 4 (Малер)", "Violins, trombones, flutes ", 1901, "Violins, flutes, trombones");
        System.out.println(Wind);
    }
}
 
 
Stringed.java
package com.company;
 
class Stringed extends MusicalInstrument {
 
    Stringed(String composition, String types, int year, String sequence) {
        super(composition, types, year, sequence);
    }
 
    public static void main(String[] args) {
        MusicalInstrument Violoncello = new Stringed("Симфония № 6 (Мясковский)", "Counterfeits, contrabass, trumpets", 1921, "Contrabass, counterfeits, trumpets");
        System.out.println(Violoncello);
    }
}
 
Shock.java
package com.company;
 
class Shock extends MusicalInstrument {
 
    Shock(String composition, String types, int year, String sequence) {
        super(composition, types, year, sequence);
    }
 
    public static void main(String[] args) {
        MusicalInstrument Drum = new Shock("Симфония № 2 (Шульгоф)", "Trumpets, saxophones, Violins", 1932, "Violins, saxophones, trumpets");
        System.out.println(Drum);
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2018, 19:24
Ответы с готовыми решениями:

Прототип
Здравствуйте, Можно ли как-то оптимизировать данный код? //---------------------------------------------------------------------- ...

прототип
Вот пример метода Element.prototype.classListe = function(){ var self = this; this.result = new ClassList(self); return...

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

9
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
19.10.2018, 19:32
что такое
Цитата Сообщение от ios21 Посмотреть сообщение
прототип копирования
?
что пробовал?
Цитата Сообщение от ios21 Посмотреть сообщение
не получается
что не получается?
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
19.10.2018, 20:02
ios21, Ого сколько у вас мэйнов, аж 4!
Что вы такое сложное делаете?
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
19.10.2018, 23:34
Цитата Сообщение от ios21 Посмотреть сообщение
shock
percussion же?

Цитата Сообщение от ios21 Посмотреть сообщение
прототип копирования
Что такое «прототип копирования»?

Цитата Сообщение от ios21 Посмотреть сообщение
Пробовал и даже нужно через метод clone()
Не нужно
1
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
20.10.2018, 03:02
korvin_, Касательно копирования "семь раз отрежь.." это понятно, уж лучше СоСо
Ну раз есть пример..
Там переписаный метод clone() бросает исключение, понятно что с лучших побуждений, + подкласс final, видимо с тех же причин. Не лучше бы было просто поставить final clone() в суперклассе, так у нас пропадут исключения при клонировании подклассов + final подкласса. Иногда же надо клонировать объекты без их спецификации подклассов.
0
0 / 0 / 0
Регистрация: 11.12.2017
Сообщений: 76
20.10.2018, 11:26  [ТС]
xoraxax, Паттерн прототип копирования. Мне нужно где-то воспользоваться методом clone вместо создания объектов через оператор new..

Добавлено через 1 минуту
ViktorFX, пишу суперкласс с подклассами, вы про это?
0
 Аватар для AlexP11223
141 / 110 / 30
Регистрация: 20.04.2011
Сообщений: 582
20.10.2018, 11:27
Я не слышал о таком паттерне, гугл тоже.

Что он делать-то должен?
0
0 / 0 / 0
Регистрация: 11.12.2017
Сообщений: 76
20.10.2018, 11:30  [ТС]
korvin_, хитро, вообще не слышал про avoid clone, так наверное тоже можно, т.е. подклассы должны генерировать исключения?? А как их отразить в Main?
0
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
20.10.2018, 11:54
Цитата Сообщение от ios21 Посмотреть сообщение
А как их отразить в Main?
Вы не понимаете, зачем вам же пробрасывать чтобы потом вам же отлавливать?
Цитата Сообщение от ios21 Посмотреть сообщение
пишу суперкласс с подклассами, вы про это?
тогда вы как хорошую альтернативу можете использовать конструктор копирования.
1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
22.10.2018, 15:53
Лучший ответ Сообщение было отмечено ios21 как решение

Решение

ios21, прототип -- достаточно простой паттерн, тем более с вашими ограничениями. Рефакторите все следующим образом:
1) класс MusicalInstrument делаете абстрактным, заведя метод
Java
1
public abstract MusicalInstrument clone();
2) для каждого класса-наследника реализуете приватный конструктор копирования и абстрактный метод от родителя (пример для Wind):
Java
1
2
3
4
@Override
public MusicalInstrument clone() {
    return new Wind(this);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2018, 15:53
Помогаю со студенческими работами здесь

Прототип класса
В С++ можно составлять прототипы функций, но можно ли составлять прототипы классов? если да, то как это синтаксически делается? ...

Прототип функции
Записать прототип функции, которая осуществляет перевод десятичного числа в двоичную систему. #include <stdio.h> #include...

Прототип функции
Препод сказал, что такое оформление функции неправильно void Dix(double &a, double &b, double &x, double &y1) и что надо заменить...

Прототип функции С++
Доброй ночи! помогите, пожалуйста, решить задачу с прототипом функции, вот условие: Написать функцию которая возводит указанное...

Прототип функции
Как правильно: void mul(int x, int y); int main() { } void mul(int x, int y) {


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru