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

Наследование и агрегация

12.12.2012, 19:02. Показов 1268. Ответов 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
37
38
39
40
41
42
43
class Album {
//Так как предметная область медиатека, я взял сначала, альбом в котором год и номер
private double god, nomer;
// конструктары
public Album() { god=0; nomer=0; }
public Album(double xval, double yval) { god=xval; nomer=yval; }
public void setGod(double xval) {god=xval;} //перемення значения год
public void setNomer(double yval) {nomer=yval;} //перемення значения номера
public void setAlbum(double xval, double yval) {god=xval; nomer=yval;}
public double getGod() {return god;} //получения года
public double getNomer() {return nomer;} //получения номера
}
//Унаследование, тут носители и тераж, касеты и тераж
class Avtor extends Album{
 
 
private double kaset, tirag;
public Avtor() { setAlbum(0,0); kaset=1; tirag=1; }
public Avtor(double xval, double yval, double l, double w ) {
setAlbum(xval, yval); kaset=l; tirag=w;}
public void setKaset(double val) {kaset=val;}
public void setTirag(double val) {tirag=val;}
public void setSides(double lval, double wval) {
kaset=lval; tirag=wval;}
public double getKaset() {return kaset;}
public double getTirag() {return tirag;}
public double getKol() {return kaset*tirag;} //подсчёт касет
} 
//Тут хотелось бы агрегацию конечно, но пока так
class Video extends Avtor{
double video;
public Video() { setAlbum(0,0); setSides(0,0); video=0; }
public Video(double xval, double yval, double l, double w, double h ) {
setAlbum(xval, yval); setSides(l, w); video=h;}
public void setVideo(double val) {video=val;}
public void setSides(double l, double w, double h) {
super.setSides(l, w); video=h;}
public double getvideo() {return video;}
public double getAll() {
return (getKol()+video);
} 
public double getSumm() {return (getKol()+video;} 
}
И вывести нужно количество.

Добавлено через 29 секунд
Я уже переделывал, но не получаеться помогите добрые люди
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.12.2012, 19:02
Ответы с готовыми решениями:

Наследование, композиция и агрегация
#include <iostream> #include <string> #include <vector> using namespace std; class A { public: A() { cout<<"Of A +"<<...

Наследование vs Композиция vs Агрегация: что лучше выбрать? Как лучше передавать объекты в функции?
Добрый день!! Дело вот в чём, я хочу создать класс, внутри которого будут созданы объекты других классов (реализованных в некоторой...

Агрегация
Здравствуйте, подскажите, пожалуйста, как решить такую проблему. Есть 2 класса, Form1:Form и User:Form1, я хочу в классе Form1 создать...

1
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
19.12.2012, 11:42
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
import java.util.*;
 
interface MediaData {
    String getType();
}
 
class MediaBook implements MediaData {
    @Override
    public String getType() {
        return "книга";
    }
    @Override
    public String toString() {
        return "MediaBook{" +
            "type=" + getType() +
            "}";
    }
}
 
class MediaFile implements Comparable<MediaFile> {
 
    public static class MediaFileBuilder {
        private MediaFile mediaFile;
        public MediaFileBuilder() {
            mediaFile = new MediaFile();
        }
        MediaFileBuilder setName(String name) {
            mediaFile.setName(name);
            return this;
        }
        MediaFileBuilder addAuthor(String author) {
            mediaFile.getAuthors().add(author);
            return this;
        }
        MediaFileBuilder addTag(String tag) {
            mediaFile.getTags().add(tag);
            return this;
        }
        MediaFileBuilder setData(MediaData data) {
            mediaFile.setData(data);
            return this;
        }
        MediaFile build() {
            return mediaFile;
        }
    }
 
    public static MediaFileBuilder getBuilder() {
        return new MediaFileBuilder();
    }
 
    private String name;
    private static Integer lastUid = 0;
    private String uid;
    private Set<String> authors;
    private Set<String> tags;
    private MediaData data;
 
    MediaFile() {
        name = "";
        uid = Integer.toHexString(lastUid++);
        authors = new HashSet<String>();
        tags = new HashSet<String>();
        data = null;
    }
 
    public String getUid() {
        return uid;
    }
 
    public void setUid(String uid) {
        this.uid = uid;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Set<String> getAuthors() {
        return authors;
    }
 
    public void setAuthors(Set<String> authors) {
        this.authors = authors;
    }
 
    public Set<String> getTags() {
        return tags;
    }
 
    public void setTags(Set<String> tags) {
        this.tags = tags;
    }
 
    public MediaData getData() {
        return data;
    }
 
    public void setData(MediaData data) {
        this.data = data;
    }
 
    @Override
    public int compareTo(MediaFile o) {
        return getUid().compareTo(o.getUid());
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof MediaFile)) return false;
 
        MediaFile mediaFile = (MediaFile) o;
 
        if (!uid.equals(mediaFile.uid)) return false;
 
        return true;
    }
 
    @Override
    public int hashCode() {
        return uid.hashCode();
    }
 
    @Override
    public String toString() {
        return "MediaFile{" +
                "uid='" + uid + '\'' +
                ", name='" + name + '\'' +
                ", authors='" + authors + '\'' +
                ", tags=" + tags +
                ", data=" + data +
                '}';
    }
}
 
class MediaStorage {
    private Set<MediaFile> mediaFiles;
    private Map<String, Set<MediaFile>> mediaFilesByTag;
    private Map<String, Set<MediaFile>> mediaFilesByName;
    private Map<String, Set<MediaFile>> mediaFilesByAuthor;
 
    public MediaStorage() {
        mediaFiles = new TreeSet<MediaFile>();
        mediaFilesByTag = new TreeMap<String, Set<MediaFile>>();
        mediaFilesByName = new TreeMap<String, Set<MediaFile>>();
        mediaFilesByAuthor = new TreeMap<String, Set<MediaFile>>();
    }
 
    private void addByTag(MediaFile mediaFile) {
        for (String tag : mediaFile.getTags()) {
            if (!mediaFilesByTag.containsKey(tag)) {
                mediaFilesByTag.put(tag, new TreeSet<MediaFile>());
            }
            mediaFilesByTag.get(tag).add(mediaFile);
        }
    }
 
    private void addByAuthor(MediaFile mediaFile) {
        for (String author : mediaFile.getAuthors()) {
            if (!mediaFilesByAuthor.containsKey(author)) {
                mediaFilesByAuthor.put(author, new TreeSet<MediaFile>());
            }
            mediaFilesByAuthor.get(author).add(mediaFile);
        }
    }
 
    private void addByName(MediaFile mediaFile) {
        if (!mediaFilesByName.containsKey(mediaFile.getName()))
            mediaFilesByName.put(mediaFile.getName(), new TreeSet<MediaFile>());
        mediaFilesByName.get(mediaFile.getName()).add(mediaFile);
    }
 
    public void add(MediaFile mediaFile) {
        mediaFiles.add(mediaFile);
        addByTag(mediaFile);
        addByName(mediaFile);
        addByAuthor(mediaFile);
    }
 
    public Collection<MediaFile> getByTag(String tag) {
        return new HashSet<MediaFile>(mediaFilesByTag.get(tag));
    }
    public Collection<MediaFile> getByAuthor(String author) {
        return new HashSet<MediaFile>(mediaFilesByAuthor.get(author));
    }
    public Collection<MediaFile> getByName(String name) {
        return new HashSet<MediaFile>(mediaFilesByName.get(name));
    }
 
    @Override
    public String toString() {
        return "MediaStorage{" +
            "mediaFiles=" + mediaFiles +
            '}';
    }
}
 
public class Tutorial0007 {
    public static void main(String[] args) {
        MediaStorage storage = new MediaStorage();
 
        storage.add(MediaFile.getBuilder()
                .addAuthor("Иван Иванов").addAuthor("Петр Петров")
                .setName("Основы программирования на Java")
                .addTag("основы").addTag("java").addTag("программирование").addTag("обучение")
                .setData(new MediaBook())
                .build());
 
        storage.add(MediaFile.getBuilder()
                .addAuthor("Петр Петров")
                .setName("Ядерная физика для домохозяек")
                .addTag("обучение").addTag("физика").addTag("основы")
                .setData(new MediaBook())
                .build());
 
        storage.add(MediaFile.getBuilder()
                .addAuthor("Иван Иванов").addAuthor("Семен Семенов")
                .setName("Суслики -- миф или реальность?")
                .addTag("обучение").addTag("эзотерика").addTag("животноводство")
                .setData(new MediaBook())
                .build());
 
        System.out.println(storage);
 
        System.out.println(storage.getByTag("основы"));
        System.out.println(storage.getByAuthor("Иван Иванов"));
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.12.2012, 11:42
Помогаю со студенческими работами здесь

агрегация
Здравствуйте. помогите пожалуйста разобраться с задачей: На сколько больше(или меньше) было дней с положительной температурой, чем с...

Агрегация
Всем привет. Подскажите, как сделать так, чтобы объект некоторого класса мог агрегировать объекты этого же класса. Ну то есть, если...

Агрегация
Доброе время,у меня вот такое задание Спроектировать 2 класса, сущности которых представлены в заданиях. В каждом классе должно быть по...

Агрегация
Здрасте уважаемые форумчане, подскажите пожалуйста, как грамотно сделать, что бы оба обьекта могли видеть методы друг друга? Вот мой...

Агрегация в C#
Объясните пожалуйста, что такое агрегация на каком-нибудь примере.


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru