2009-07-08 2 views
2

Возможно ли иметь несколько классов, которые наследуют/расширяют один и тот же класс в Google AppEngine с Java (GAE/J) для моих объектов (JDO). Например, у меня есть:Сложная иерархия классов в Google AppEngine (Java)

  • Содержание (абстрактный класс)
  • курс

и тогда мой курс будет:

  • список видео, которые is extends Содержание
  • список книг

В то же время

  • Видео имеет список Метки
  • Книга имеет список Метки
  • курс имеет список Метки

Возможно ли это сделать GAE?

Я делаю схожую с этим, но имею столько проблем. Есть ли примеры такого рода вещей?

+0

Maksim, ваша основная проблема с тем, как комментировать ваши классы, чтобы JDO работал правильно? Или вы спрашиваете о том, как наследование в Java работает вообще? –

+0

Я знаю, что это не ваш вопрос, но у Google App Engine есть средство просмотра базы данных - оно находится на панели инструментов вашего приложения Google App Engine, в Datastore -> Data Viewer. – Templar

+0

Также, если у вас есть новая версия AppEngine SDK 1.2.2, вы можете перейти к http: // localhost: 8080/_ah/admin при запущенном режиме. – Maksim

ответ

1

обновление на основе нового заголовка вопроса

Я до сих пор не понимаю, что ваши трудности, но я дам ему выстрелили

Ваш вопрос

Можно иметь несколько классов , которые наследуют/расширяют класс в Google AppEngine с Java (GAE/J) для моих объектов

Ответ да, почему бы и нет? Я не вижу в вашем вопросе ничего, что нельзя сделать. Какая у вас проблема?

Я делаю схожую с этим, но имея столько проблем. Есть ли какие-либо примеры такого рода вещей? Как вы это делаете, потому что я не вижу ничего плохого в описании, которое вы опубликовали.

и просто, чтобы помочь вам, вот один из способов сделать это можно,

interface Tagable { 
public doSomeThingWithTagList(); 
} 

class abstract Content implements Tagable { 
List<Tag> tagList; 
} 

class Video extend Content implements Tagable { 
} 

class Book Tagable{ 
List<Tag> tagList; 
} 

class Course Tagable { 
    List<Video> videoList; 
    List<Books> bookList; 
    List<Tag> tagList 
} 
+0

о, извините, мой плохой. Я имею в виду сложную иерархию. Я просто изменил название вопроса – Maksim

2

Я возьму выстрел в темноте здесь основано на том, что вы упомянули:

  • Поместите список тегов в Контент вместе с методами управления
  • Видео, книги и курс могут расширить содержание (не уверены, имеет ли это смысл в дизайне)
  • Курс может содержать список видео и книг.
  • Все будет иметь список тегов

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

1

Похоже, что большинство относящихся к классу отношений должны быть экземплярами композиции, а не наследованием. Вы не можете выполнять множественное наследование реализации на Java, но вы можете реализовать несколько интерфейсов. У композиции нет этих ограничений, и объект может содержать ссылки на другие объекты (состав) разных (множественных) классов.