Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с отсутствием множественного наледования. / 20 сообщений из 20, страница 1 из 1
20.04.2005, 18:47
    #33026224
Сергей. Р.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
Здавствуйте. Изучаю самостоятельно Java и наткнулся на такую проблему. Если создаешь простейший AudioPlayer на базе applet, то все хорошо и прекрасно. Но как только попытался его усложнить (например, сделать Frame, в котором можно выбирать звуковые файлы из списка) наткнулся на невозможность использовать методы интерфейса AudioClip.java. Объект который наследует Frame их использовать не может. Та же ситуация и с приложением. Как это обойти? Бандитский метод из книжек: class MyWindow extends Frame implements AudioClip{ не помогает, так как этот класс должен быть абстракным и для него не возможено создание объекта используя new. Как решаются такие проблемы?
...
Рейтинг: 0 / 0
20.04.2005, 19:16
    #33026313
Steppenwulf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
Почему метод из книжки бандитский? Вам нужно не "использовать", а реализовать свои методы интерфейса AudioClip внутри вашего окна. В интерфейсе внутри методов никакого кода нет, есть только их описание. Если же Вы хотите использовать готовый класс - наследник AudioClip, используйте шаблон "декоратор".
...
Рейтинг: 0 / 0
20.04.2005, 19:23
    #33026330
XM
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
20.04.2005, 19:52
    #33026383
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
во-первых - почитать про интерфейсы
во-вторых - прочитать про другие виды отношений между классами (ассоциацию, агрегацию и композицию)
...
Рейтинг: 0 / 0
21.04.2005, 11:10
    #33027090
Евгений Путилин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
funikovyuriво-первых - почитать про интерфейсы
во-вторых - прочитать про другие виды отношений между классами (ассоциацию, агрегацию и композицию)
В третих читать design patter как делается множественное наследование без онного.
В четвертых читать как работает С++, и как работал транслятор Zortich C++
(C++->C)
...
Рейтинг: 0 / 0
21.04.2005, 11:21
    #33027124
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
ого загнули - design patterns изучать.
Вот у меня просто фантазии не хватило бы придумать необходимость такого наследования:
Код: plaintext
class MyWindow extends Frame implements AudioClip
...
Рейтинг: 0 / 0
21.04.2005, 11:37
    #33027176
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
XMого загнули - design patterns изучать.
Вот у меня просто фантазии не хватило бы придумать необходимость такого наследования:
Код: plaintext
class MyWindow extends Frame implements AudioClip

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

Если с этой стороны смотреть, тогда да :))
...
Рейтинг: 0 / 0
21.04.2005, 11:55
    #33027257
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
концептуальность в ваших раках :) можно и с множественным наследованием такого понагородить...
...
Рейтинг: 0 / 0
21.04.2005, 12:56
    #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
21.04.2005, 13:03
    #33027507
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
...Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала...
А я так и делаю, читаю и запоминаю, может я тупой?
...
Рейтинг: 0 / 0
21.04.2005, 13:06
    #33027517
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
wessen ...Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала...
А я так и делаю, читаю и запоминаю, может я тупой?
А иногда второй раз перечитываю, ну точно тупой....

По сабжу, а что значит "не работают методы", вылетает исключение или чего нить другое происходит?
...
Рейтинг: 0 / 0
21.04.2005, 13:15
    #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
21.04.2005, 13:17
    #33027555
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
опечатка
Код: plaintext
1.
вместо  class  MyFrame ->  class  MyWindow
...
Рейтинг: 0 / 0
21.04.2005, 13:21
    #33027565
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
Сергей. Р.Вы рассматриваете мой вопрос с позиции расставленных на ширину гаражных ворот пантов. Нужно брать аудио фаил из списка и проигрывать. Но интересует как именно получить доступ к методам play(); loop(); stop();
извени нас всех.

а зачем тебе использовать AudioClip? используй более совершенные технологии.
http://java.sun.com/j2se/1.5.0/docs/guide/sound/programmer_guide/contents.html
...
Рейтинг: 0 / 0
21.04.2005, 13:22
    #33027567
А.Грасоff™ JE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
wessen ...Никто не будет тупо читать и запоминать 300-400 страниц теоретического материала...
А я так и делаю, читаю и запоминаю, может я тупой?
не переживай. не ты один такой.... :(
...
Рейтинг: 0 / 0
21.04.2005, 13:24
    #33027574
XM
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
22.04.2005, 15:18
    #33030415
Сергей. Р.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
Всем спасибо за помощь. Проблему решил сам, а теперь буду изчучать, что посоветовали. Многие вещи можно по разному делать.
...
Рейтинг: 0 / 0
22.04.2005, 15:25
    #33030429
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с отсутствием множественного наледования.
Многие вещи можно по разному делать.
Вот тут ты безнадежно прав :) Но не забывай про эффективность, она тоже бывает разная:)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с отсутствием множественного наледования. / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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