powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с отсутствием множественного наледования.
20 сообщений из 20, страница 1 из 1
Проблема с отсутствием множественного наледования.
    #33026224
Сергей. Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здавствуйте. Изучаю самостоятельно Java и наткнулся на такую проблему. Если создаешь простейший AudioPlayer на базе applet, то все хорошо и прекрасно. Но как только попытался его усложнить (например, сделать Frame, в котором можно выбирать звуковые файлы из списка) наткнулся на невозможность использовать методы интерфейса AudioClip.java. Объект который наследует Frame их использовать не может. Та же ситуация и с приложением. Как это обойти? Бандитский метод из книжек: class MyWindow extends Frame implements AudioClip{ не помогает, так как этот класс должен быть абстракным и для него не возможено создание объекта используя new. Как решаются такие проблемы?
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33026313
Steppenwulf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему метод из книжки бандитский? Вам нужно не "использовать", а реализовать свои методы интерфейса AudioClip внутри вашего окна. В интерфейсе внутри методов никакого кода нет, есть только их описание. Если же Вы хотите использовать готовый класс - наследник AudioClip, используйте шаблон "декоратор".
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33026330
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще-то зачем?
Неужели нельзя просто
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
   JButton button=new JButton("Play");
   button.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e){
                AudioClip clip=java.applet.Applet.newAudioClip(selectFrame.clipURL);
                clip.play();
       }
   });
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33026383
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во-первых - почитать про интерфейсы
во-вторых - прочитать про другие виды отношений между классами (ассоциацию, агрегацию и композицию)
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027090
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
funikovyuriво-первых - почитать про интерфейсы
во-вторых - прочитать про другие виды отношений между классами (ассоциацию, агрегацию и композицию)
В третих читать design patter как делается множественное наследование без онного.
В четвертых читать как работает С++, и как работал транслятор Zortich C++
(C++->C)
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027124
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ого загнули - design patterns изучать.
Вот у меня просто фантазии не хватило бы придумать необходимость такого наследования:
Код: plaintext
class MyWindow extends Frame implements AudioClip
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027176
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMого загнули - design patterns изучать.
Вот у меня просто фантазии не хватило бы придумать необходимость такого наследования:
Код: plaintext
class MyWindow extends Frame implements AudioClip

и че тут такого? Это кстати в любой книжке написано. Только обычно на примере с апплетом - ...extends JApplet implements Runnable{...
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027202
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 wessen Концептуально неправильно. Как
Код: plaintext
class MyDog extends Dog implements  Aircraft 
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027219
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XM 2 wessen Концептуально неправильно. Как
Код: plaintext
class MyDog extends Dog implements  Aircraft 

Если с этой стороны смотреть, тогда да :))
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027257
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
концептуальность в ваших раках :) можно и с множественным наследованием такого понагородить...
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027484
Сергей. Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы рассматриваете мой вопрос с позиции расставленных на ширину гаражных ворот пантов. А рассмотрите его с точки зрения человека изучающего язык самостоятельно. Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала и часто не работающих, и взятых с потолка примеров. Изучив минимальный теоретический материал все пытаются, что-то реализовать самостоятельно, используя книгу как источник недостающей информации. Например методы play(); loop(); stop(); из AudioClip.java без проблем можно использовать в апплете, но они не доступны объекту на базе Frame.
Как к этим методам, по-простому, получить доступ в MyWindow, там, где обработчик событий нажатия на соответствующие кнопки расположенные во фрейме? Понятно, что код не полный. Нужно брать аудио фаил из списка и проигрывать. Но интересует как именно получить доступ к методам play(); loop(); stop();, все остальное просто.
Код: plaintext
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.
 import  java.awt.*;
 import  java.applet.*;

 public   class  AudioP  extends  java.applet.Applet {
        
         public   void  start() {
         new  MyWindow("AudioPlayer");
        resize( 300 ,  150 );
        show();
	}
}


 class  MyWindow  extends  Frame{
      private  Panel panel;    
	
	MyWindow(String title){
         super (title);
	setLayout( new  BorderLayout());
        panel =  new  Panel();
        add("Center", panel);
        setLayout( new  FlowLayout(FlowLayout.LEFT));
        panel.add( new  Button("Play"));
        panel.add( new  Button("Stop"));
        panel.add( new  Button("Loop"));	

	// .........
	}

// .........

 public   boolean  handleEvent(Event evt) {
        
         switch (evt.id){
             case (Event.ACTION_EVENT): {
                System.out.println(evt.arg);
                
                 if  (evt.arg == "Play") {
                    audioClip.play();
                }
		 else   if  
		   (evt.arg == "Stop") {
                    audioClip.stop();
                    }
                 else   if  
		   (evt.arg == "Loop") {
                   audioClip.loop();
                } else 
                    return  false;
            }
             default : {
                    return  false;
            }
        }
}
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027507
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала...
А я так и делаю, читаю и запоминаю, может я тупой?
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027517
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen ...Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала...
А я так и делаю, читаю и запоминаю, может я тупой?
А иногда второй раз перечитываю, ну точно тупой....

По сабжу, а что значит "не работают методы", вылетает исключение или чего нить другое происходит?
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027550
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное так должно сработать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 public   class  MyApplet  extends  JApplet{
...
    public   void  start() {
         new  MyWindow( this );
   }
...
}

 public   class  MyFrame  extends  JFrame{
...
    public  MyFrame(JApplet applet){
      AudioClip audioClip=applet.getAudioClip("some_url_clip");
   }
...
}

это не единственный способ.
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027555
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опечатка
Код: plaintext
1.
вместо  class  MyFrame ->  class  MyWindow
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027565
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей. Р.Вы рассматриваете мой вопрос с позиции расставленных на ширину гаражных ворот пантов. Нужно брать аудио фаил из списка и проигрывать. Но интересует как именно получить доступ к методам play(); loop(); stop();
извени нас всех.

а зачем тебе использовать AudioClip? используй более совершенные технологии.
http://java.sun.com/j2se/1.5.0/docs/guide/sound/programmer_guide/contents.html
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027567
А.Грасоff™ JE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen ...Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала...
А я так и делаю, читаю и запоминаю, может я тупой?
не переживай. не ты один такой.... :(
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33027574
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все равно не вижу проблемы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
// в объявлених полей MyWindow
AudioClip audioClip;
String clipPath; // сюда внести путь к выбранному аудио клипу
// в методе handleEvent
 if  (evt.arg == "Load") {
     try {
         URL clipURL= new  URL(clipPath);
         audioClip=java.applet.Applet.newAudioClip(clipURL);
       catch (MalformedURLException exception){
      }
}
BTW: почему AWT а не Swing?
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33030415
Сергей. Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь. Проблему решил сам, а теперь буду изчучать, что посоветовали. Многие вещи можно по разному делать.
...
Рейтинг: 0 / 0
Проблема с отсутствием множественного наледования.
    #33030429
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Многие вещи можно по разному делать.
Вот тут ты безнадежно прав :) Но не забывай про эффективность, она тоже бывает разная:)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с отсутствием множественного наледования.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]