Работа с иерархическими классами

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Работа с иерархическими классами

Сообщение Aerus » 27.11.2006 (Пн) 13:41

Только начал работать с классами, почитал и возник вопрос, мне нужно создать иерархию, Агенство -> Туры , а дальше разветвление:
/-> Шоппинг
\-> Путевка
Т.е это и есть иерархия. Но дело в том что допустим я создал классы, только я не пойму как дочерние могу наследовать данные с материнских. Добавлять данные это вообще отдельная тема, я сначало думал добавлять данные создавая новые классы, но потом узнал что как-то можно связать с базой. До этого я уже делал программы в которых через форму работал с базой, а возможно ли такое используя классы ?

Т.е. из этого текста мне не понятно что можно наследовать с материнских веток ?
И как можно реализовать работу а именно добавление данных в базу при помощи классов ?
Помогите пажалста. Просидел пол дня, а оч. интересно.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 27.11.2006 (Пн) 14:56

VB Class Builder тебе, думаю, поможет.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 27.11.2006 (Пн) 18:33

Эх, насоздавал, а вот что наследовать хм.

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 27.11.2006 (Пн) 22:28

А наследовать се равно не судьба, то что тебе предлогает ВБ не очень вдохновляет

(Ctrl+C; Ctrl+V) - вот твое наследование:D

http://bbs.vbstreets.ru/viewtopic.php?t=28032

на создание полноценной иерархии необходимо точное представление структуры обектов потом уже дело к коллекциям обектов идет.

или пересмотри в корень позицию может лучше встроенный обект коллектион использовать.
Dmitrich

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 28.11.2006 (Вт) 10:33

Лучше вообще не делать представлений данных из базы в виде классов. Гемору много, смысла мало. Биндинга вполне достаточно. 30-40% кода кочует из проекта в проект без изменений, а с классами получится 90% уникального кода, который нужно писать, писать, писать...

Добавление в таблицу базы, допустим, одного текстового поля и текстбокса, его редактирующего, в программу, при использовании биндинга не потребует ни одной строки кода. При использовании классов придется делать свойство - как минимум 8 строчек. А если классы выведены в отдельную библиотеку, периодически будут вылезать проблемы совместимости версий.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.11.2006 (Вт) 13:09

offtopic()
{
Antonariy писал(а):...допустим, одного текстового поля и текстбокса, его редактирующего, в программу, при использовании биндинга не потребует ни одной строки кода. При использовании классов придется делать свойство - как минимум 8 строчек.


Не то что бы у меня много времени. Совсем наоборот, времени всегда не хватает. Но я лучше что нибудь напишу. Ибо от процесса писания я получаю настоящее удовольствие.
}
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 29.11.2006 (Ср) 12:56

Спасибо всем, уже начало получаться.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 29.11.2006 (Ср) 15:35

Хакер писал(а):offtopic()
{
Antonariy писал(а):...допустим, одного текстового поля и текстбокса, его редактирующего, в программу, при использовании биндинга не потребует ни одной строки кода. При использовании классов придется делать свойство - как минимум 8 строчек.


Не то что бы у меня много времени. Совсем наоборот, времени всегда не хватает. Но я лучше что нибудь напишу. Ибо от процесса писания я получаю настоящее удовольствие.
}
А для меня это досадный тормоз между мыслью и реализацией :)
Лучший способ понять что-то самому — объяснить это другому.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 24.12.2006 (Вс) 16:11

Вот я создал на форме клавиши и их код:

Код: Выделить всё

Dim myAgenstvo As Variant


Private Sub Command1_Click()
Set myAgenstvo = New Agenstvo
Dim a As String
a = InputBox("Введите название агенства")
myAgenstvo.Agenstvo = a
End Sub


Private Sub Command2_Click()
Form1.Label3.Caption = myAgenstvo.Show
End Sub

Private Sub Command3_Click()
Set myAgenstvo = New Tury
Dim b, c As Integer
Dim d As String
b = InputBox("Введите стоимость")
c = InputBox("Введите дату")
d = InputBox("Введите страну")
myAgenstvo.Stoimostj = b
myAgenstvo.Data = c
myAgenstvo.Strana = d
End Sub

Private Sub Command4_Click()
Form1.Label3.Caption = myAgenstvo.Show
End Sub


И классы для них:

Код: Выделить всё
Private mvarAgenstvo As Integer
Public Function Show() As String
Show = "Название: Агенство - " & mvarAgenstvo & "."
End Function

Public Property Let Agenstvo(ByVal vData As Integer)
    mvarAgenstvo = vData
End Property


Public Property Get Agenstvo() As Integer
    Agenstvo = mvarAgenstvo
End Property


Код: Выделить всё
Private mvarStoimostj As Integer
Private mvarData As Integer
Private mvarStrana As String
Public Function Show() As String
Show = "Туры: страна - " & mvarStrana & ", дата - " & mvarData & ", стоимость - " & mvarStoimostj & "."
End Function

Public Property Let Strana(ByVal vData As String)
    mvarStrana = vData
End Property

Public Property Get Strana() As String
    Strana = mvarStrana
End Property

Public Property Let Data(ByVal vData As Integer)
    mvarData = vData
End Property

Public Property Get Data() As Integer
    Data = mvarData
End Property

Public Property Let Stoimostj(ByVal vData As Integer)
    mvarStoimostj = vData
End Property

Public Property Get Stoimostj() As Integer
    Stoimostj = mvarStoimostj
End Property


Здесь Агенство является главной ветсью, а Туры дочерней, потом от туров идут еще 2 дочерние ветви, но мне нужно разобраться с этими двумя ветвями (Агенство и Туры). Проблема в том, что мне нужно чтобы помимо второй ветви отображались и данные первой ветви, а я не пойму как это реализовать. (Я надеюсь это и есть иерархия.)
Помогите пажалста.

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 24.12.2006 (Вс) 22:21

Я досихпор не нашел решения, может ктонить знает ?

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 25.12.2006 (Пн) 6:36

Увы Уважаемый - это не есть иерархия - ето есть анархия в коде - никакого стиля, да и смысла тоже, очень печально что Вы не вняли гососу разума и совету г-н. Antonariy, однако VB Class Builder - всеже пинаете. Иерархия - стуктура объектов завсимых по отношению друг к другу, к примеру Родитель (Агенство) - Потомок (Туры), Вы же манипулиеруете свойствами в классе (Обект - Агенство) Вашем случае, напрямую и пишите при ентом "вот классы" - это по мешьшей мере бестактно и наводит на мысль о дурном тоне. Можно- же вконце концов купить книжку, если нельзя купить то можно скачать например отсюда http://all-ebooks.info/forum/index.php, что тоже не очень хорошо. И вот почитав немного все сразу станет ясно и вопросы подобоного рода перестанут занимать вас настолько, что Вы наверняка станете использовать кнопку "Правка" - это очевидно сказали-бы Модератоы.
Dmitrich

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 25.12.2006 (Пн) 21:21

Dmitriy2003
Делал как мог, использовал методичку ту что в институе дали. Книжка у меня есть Федорова, Ананьева Основы ВБ6, но в ней нет описание иерархии классов, там только есть что оно из себя представялет (в 3-х строчках). За ссылку спасибо, буду искать хтя и не знаю в каких именнно книгах это описано :) Какую вы бы книгу посоветовали, где это описано ?

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 25.12.2006 (Пн) 22:14

Вот чуть чуть теории

или эти книжки к примеру - http://www.visual.2000.ru/develop/vb/books-vb/90609vb2.htm
Вложения
Buch_OOP.part1.rar
(1.39 МиБ) Скачиваний: 39
Buch_OOP.part2.rar
(1.39 МиБ) Скачиваний: 33
Buch_OOP.part3.rar
(150.54 Кб) Скачиваний: 32
Dmitrich

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 26.12.2006 (Вт) 20:29

Dmitriy2003
Спасибо.

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 26.12.2006 (Вт) 21:17

Да незачто. Надеюсь это поможет...
Dmitrich

Aerus
Новичок
Новичок
 
Сообщения: 31
Зарегистрирован: 08.10.2006 (Вс) 15:40

Сообщение Aerus » 28.12.2006 (Чт) 18:54

Dmitriy2003
Почитал, в принципе понял что такое наследование. Те 2 книги не нашел. Теперь надо реализовать в коде, как вот только взять информацию с предыдущей ветки, загонять в переменные выдает ошибки..

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 28.12.2006 (Чт) 20:16

Я стронник хранения данных в таблицах, без ООП, вполне удачно получается, так - что вопрос не ко мне.

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


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList