powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ООП в VB, а что в нем не так???
21 сообщений из 21, страница 1 из 1
ООП в VB, а что в нем не так???
    #32265066
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем по мнению сишников с плюсами VB "недоделанный" как объектно-ориентированный язык. Что ему не хватает?
Написал тут программку небольшую с использованием своих классов,показалось мне,что есть все что надо. Но правда опыта мало по этому вопросу?
Но не понравилось что в Class Builder после создания методов ,свойств и событий их нельзя изменить или редактировать, только вручную код лопатить!!!??? Вот. Ответьте , зубры ООП в VB.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32265154
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в VB нет наследования и полиморфизма.
нет конструкторов (Initialize - это пародия на конструктор)
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32265255
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ведь можно создать класс на базе другого. Это не наследование ?
//(Initialize - это пародия на конструктор)
А почему пародия, что такое особенное в конструкторах с++.
При создании объекта VB-шный Initialize вроде может набацать что нужно.
Я 6 лет сидел на процедурных принципах программирования , а сейчас вот ООП юзаю. Вообщем то достоинств у ООП хватает,но все говорят ,что его реализация на VB -" подосланная". Полиморфизм это вроде использование одних и тех же определенных методов разными классами (если не путаю). Так уж это важно?
По сути дела ООП просто группировка тех же самых процедур и функций.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32266126
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ведь можно создать класс на базе другого. Это не наследование ?

внешне похоже, по сути - нет. Язык(компилятор) ничего не знает о взаимосвязи этих двух КЛАССОВ (не объектов), соответственно ничего не может контролировать - все на твоей совести.

//(Initialize - это пародия на конструктор)
А почему пародия, что такое особенное в конструкторах с++.
При создании объекта VB-шный Initialize вроде может набацать что нужно.

главная особенность - это возможность передать пераметры в этот самый конструктор. Можно конечно, сначала созать объект, а потом вызвать какой-то его метод и передать нужные параметры инициализации. Но опять-же компилятором никак не контролируется выполнил ты второй шаг или нет. Элементарно просто забыть его написать.

Я 6 лет сидел на процедурных принципах программирования , а сейчас вот ООП юзаю. Вообщем то достоинств у ООП хватает,но все говорят ,что его реализация на VB -" подосланная".

я с ними согласен, но тем не менее, это не мешает мне зарабатывать на жизнь с помощью VB. Иногда с тоской посмотрю в сторону С++, вечерком посижу для души, а утречком - за VB, потому, что для _моих_ задач это самый эффективный инструмент.

Полиморфизм это вроде использование одних и тех же определенных методов разными классами (если не путаю). Так уж это важно?

каждый решает для себя. В моих приложениях - не важно.
На мой взгляд, в VB реализован минимальный джентельменский набор OOП, который является вот этим:
По сути дела ООП просто группировка тех же самых процедур и функций.

Твое мнение вызвано тем, что ты идешь к ООП через VB.
На самом деле все намного лучше :-)
Почитай что-то сишное, хоть того-же Стауструпа. Если в синтаксис не вникать, то все идеи ООП можно почерпнуть оттуда.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32266637
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот вроде в VB.NET ООП на уровне. Не доводилось правда работать на VB.NET.
Там хоть что нибудь от старого VB по части ООП осталось или все перелопатили?
Коллеги говорят, что переходить на VB.NET пока нет большого смысла и я с ними почти согласен.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32266959
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу .Net не знаю, не пробовал. Но слышал, что действительно
вроде в VB.NET ООП на уровне

а по поводу перехода на vb.Net, то насколько я смог понять рекламу, то это переход не просто с языка на язык, а переход на совершенно другую технологию, причем в ней особо большой разницы между языками нет (что С#, что VB.Net - одинаково, разница только в синтаксисе.)
Но все равно это только понаслышке - ну не ел я этих устриц.
А бросать изученный вдоль и впоперек, и главное востребованный инструмент я считаю глупо - за Microsoft все равно не угонишься, а будешь только тем и заниматься, что изучать ее нововведения и разгребать ошибки и недоработки за свой счет.
Если только начинаешь изучать, и выбираешь куда устремиться, то естественно, надо выбирать самое передовое, что есть на данный момент и рости вместе с ростом выбранной технологии - детство-отрочество-юность-зрелость. А потом по-новой. Как правило за это время сменится две - три новомодных технологии, которые и умирают обычно с такой-же скоростью как и появляются. :-)
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32266974
Александрик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программирую на VB недавно, раньше использовал только BCPP или MSVC
заинтересовался вашим топиком потому, что никак не могу понять как транслятор (или компилятор) языка VB, память после использования освобождает.
все понимаю - есть New, отлично....
но нет Delete и нет Деструкторов....
Помниться Был на одной из презентации Net Framework так там мелкомягкие специалисты говорили что особо беспокоиться по этому поводу не надо, все равно памяти сейчас на машинах много - это вам не 20 лет назад и т д.

Если кто знает расскажите или отошлите куда-нибудь...
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267000
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там все очень просто. У каждого объекта при его создании VB создает счетчик ссылок на этот объект.
Как только этот счетчик становится равным нулю, объект уничтожается автоматом. Счетчик управляется исключительно самим VB.
Это один из основных источников утечки памяти, и сопровождается зависанием и приложения в памяти даже после закрытия всех окон приложения. Искать такую ошибку ОЧЕНЬ неприятно.
К стати, одно пренеприятнейшее следствие - два взаимноссылающихся друг на друга объекта навсегда зависают в памяти. Никаким способом эту ситуацию не разрешить, кроме как перепроектированием структуры объектов. Внешне это проявляется тем, что приложение из памяти выгружается только через TaskManager, тоесть аварийно и в открытых формах код событий Terminate, Unload не выполняется....
В "Крепком орешке" описан способ как этого избежать, но там можно запросто систему завалить - прямой доступ к памяти в защищенном режиме, да еще и из VB - думаю дальше продолжать не надо? :-)

С другой стороны, если аккуратно избегать таких ситуаций, то о выделении памяти голова не заморачивается - все делается автоматом и достаточно красиво и надежно.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267006
Александрик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошо, как же тогда избежать того чтобы небыло взаимных ссылок между объектами...

ситуация такая
создаем объект А
объект А где-то по ходу программы создает объек B
а объекту B ну очень-очень нужно обратиться к полям объекта A....

как мне кажется - очень распространенная ситуация...

как здесь обойтись без взаимных ссылок?
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267241
Фотография Nrisimha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если сравнить по количеству написанного текста программы на VB.NET и C# , то где меньше кода уйдет?
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267262
Фотография tpg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Практически монорельсово.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267697
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Александрик:
описанная тобой ситуация как раз не создает взаимной ссылки.

взаимная ссылка получается вот так:
в объекте А есть объектная переменная уровня модуля, которая ссылается на объект В.
А в объекте В есть объектная переменная уровня модуля, которая ссылается на объект А.
Пока хотя-бы одна из этих переменных не станет Nothing, оба объекта будут оставаться в памяти.

Решается это только с помощью перепроектирования объектной модели, либо второй вариант - в одном из классов создается метод, который присваивает объектным переменным уровня модуля значение Nothing. Этот метод надобно вызывать вручную _перед_ выгрузкой объекта. Этот вариант - не более чем заплатка, которую можно применить когда менять что либо уже поздно. Но _изначально_ 100% лучше избегать этих ситуаций.

По идее, эту ситуацию может еще решить оператор END (не проверял), но это все равно, что стопкран на Шатле :-)
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267701
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полностью согласен с Hibernate.
Многие наезжают на VB за то,что якобы он простой. Я с этим не согласен.На самом деле простота VB обманчива. Например у нас те кто пишет на VC++ считает тех ,кто пишет на VB юзерами. Как услышит наш спец ,что приложение на VB сделано сразу говорит -это говно.Меня эта категоричность всегда бесила (как и споры про какой язык лучше).Но спорить , что лучше просто бессмысленно. Например по скорости разработки приложения VC++ в жопе , ну естественно от задачи и подготовки программиста зависит, но в среднем на VB на порядок быстрей можно забацать.
ООП позволяет легче справляться с большими или ультрабольшими программами и для этого его придумали. Применять ООП при создании несложных и средних программ не всегда уместно.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267785
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Бобер

Например у нас те кто пишет на VC++ считает тех ,кто пишет на VB юзерами.

у нас таких принято увольнять, будь программист на VB или на C или еще на чем.

Я считаю (но никогда не называю) юзерами тех, кто применяет средства, неадекватные поставленной задаче. Хотя тут тоже есть плюс-минус (например, я в данный период своей трудовой деятельности больше "в теме" VB, поэтому для некоторых задач, где VB не совсем эффективен, иногда все-таки эффективнее применить VB, а не восстанавливать свою квалификацию например, сишника и применять VС++)

По моему опыту, в современном бизнес-программировании важен не инструмент, а связка программист-инструмент.
Причем роль программиста, его опыта и трезвости взгляда на мир - определяющая.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267799
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
другой вопрос, что благодаря внешней простоте, в VB приходит очень много дилетантов, которые будут дилетантами в чем угодно, потому, что они дилетанты по своей внутренней природе.
Поэтому я признаю, что если программа написана на VB, то вероятность того. что она окажется поделкой - намного выше, чем если бы она была написана на С. Это совсем не страхует от того. что сишная программа кажется поделкой. Это тоже очень даже возможно.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267907
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну юзерами я к слову сказал! Но наши сишники считают, что настоящие программеры пишут только на си,а тех кто пишет на другом за программеров не считают. Ну и дураки. У программистов (ну не у всех конечно)со временем иногда появляется нехорошая черта,которая называется спесивость.И они мнят всех идиотами. Обычное явление.У нас таких просто как грязи.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32267961
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это злобствующие дилетанты. Не обращай внимания - большего они не стоят.
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32268728
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже вроде все обсуждалось - писать надо на том, что лучше знаешь
а С-шников хочу осадить немного, у нас есть один монстр, который на масм пишет даже клиентов для SQL Server'а, так он смется над сишниками =))) и тоже называет ихнее проги нехорошими словами
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32268746
Бобер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну полный улет!!! Хороший друг у Smile!!! На слив сишников!!!
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32270921
Фотография Nrisimha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы говорите нет дуструкторов, а это что по вашему?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Class AdoN_Connect
    Public Conn As OleDb.OleDbConnection
    Public Sub New(ByVal str_mdb As String)
        Conn = New OleDb.OleDbConnection()
        Conn.ConnectionString = _
             "Provider=Microsoft.Jet.OLEDB.4 . 0 ;Data Source=" & _
            str_mdb
        Conn.Open()
    End Sub
    Protected Overrides Sub Finalize()
' по моему это и есть деструктор!!!!!!!
        Console.WriteLine("Объект уничтожен")
        'Conn.Close()
        Conn = Nothing
    End Sub

End Class
...
Рейтинг: 0 / 0
ООП в VB, а что в нем не так???
    #32270985
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это пример не от Visual Basic, а VB.NET. Это совсем разные языки. Кроме того, Finalize - это не совсем деструктор в привычном понимании. Во-первых, в нем не все можно делать с методами и полями объекта, а во вторых, попробуй вызови его явно.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ООП в VB, а что в нем не так???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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