Форум программистов, компьютерный форум, киберфорум
Наши страницы
Комментарии
Войти
Регистрация
Восстановить пароль
  1. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Процедурное самое простое, когда задача простая, а проект - маленький. С ростом проекта потребность в больших абстракциях растёт чуть ли не экспоненциально.

    Я не увидел в вашем описании "компоненты" никаких принципиальных отличий от объектов.
    Запись от Usaga размещена 12.04.2019 в 16:17 Usaga на форуме
  2. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    В процедурном подходе такое если и достижимо, то фиг знает какой ценой.
    Процедурное это как раз самое простое, эффективное, понятное, легко поддерживаемое(если правильно используется))

    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    А это не про тоже самое?
    Нет. Компонент это процедура, которая является общеразделяемой между другими компонентами, сущностью. Программа строится из таких кирпичиков постоянно наращивая слои абстракции, пока не останется всего один компонент под именем "Run!". Это потому, что компоненты строятся из других компонентов. Обьектники используют плоский подход: есть один уровень абстракции - классы. В компонентной программе эти абстракции постоянно растут, а поэтому, чем ближе к завершению программы, тем легче программировать. В ООП чем ближе к концу программы, тем сложнее программировать. Вот и вся разница.
    Запись от CoderHuligan размещена 12.04.2019 в 12:22 CoderHuligan вне форума
  3. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Это не процедурное программирование. Классы позволяют явно выделить в системе сущности предметной области, выделить и изолировать состояние этих сущностей, выделить связи между этими сущностями. Это существенно (чудовищно, я бы сказал) упрощает разработку. Ведь вы оперируете понятиями проектируемой системы самым явным образом. Видите, где что находится и как с чем взаимосвязано. В процедурном подходе такое если и достижимо, то фиг знает какой ценой.

    Другое дело, что если вам не доводилось работать над большим проектом, то необходимость в таких вещах будет, конечно же, ниразу не очевидной.

    Цитата:
    я за компоненты.
    А это не про тоже самое?
    Запись от Usaga размещена 12.04.2019 в 05:46 Usaga на форуме
  4. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Почему вы считаете класс имитацией модульности?
    Потому что его используют в виде модуля системы. Это обычное процедурное программирование, но усложнённое препонами в виде классов. Преодолением этих препон занимаются определённые фичи ООП - дружественные классы, синглтоны и пр. Получается - хотели уменьшить сложность программирования, а на самом деле всё только усложнили. Классы используются просто как хранилища процедур разложенных по функциональному признаку.
    Хочу оговориться, что я против модульности и против классов, - я за компоненты.
    Запись от CoderHuligan размещена 11.04.2019 в 15:26 CoderHuligan вне форума
  5. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Да ладно, тут всё равно тихо и никого нет. Можно и побеседовать. Тем более, что по теме.

    Почему вы считаете класс имитацией модульности?
    Запись от Usaga размещена 11.04.2019 в 13:18 Usaga на форуме
  6. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    То, что в классе не "глобалы". Это - состояние класса, точнее каждого экземпляра этого класса. И оно закрыто от внешнего мира (если не используются модификаторы public). Так, что никакой "глобальностью" тут и не пахнет.
    Просто для вас класс это "вещь в себе", а для меня это просто имитация модульности, когда часть функций и структур сваливают вместе и этот агрегат называют классом. Ну, ладно этот разговор не для блога.
    Запись от CoderHuligan размещена 11.04.2019 в 13:17 CoderHuligan вне форума
  7. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    То, что в классе не "глобалы". Это - состояние класса, точнее каждого экземпляра этого класса. И оно закрыто от внешнего мира (если не используются модификаторы public). Так, что никакой "глобальностью" тут и не пахнет.
    Запись от Usaga размещена 11.04.2019 в 12:55 Usaga на форуме
  8. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Методы класса видят поля класса потому, что и те и другие являются членами этого класса. Т.е. вещи находятся на одном уровне видимости друг для друга.
    Между прочим я не говорю что это неправильно, я просто намекаю что люди скрыли в классе работу с глобалами, как это было раньше, когда программировали в процедурном стиле. Чем больше класс, тем лучше инкапсуляция, и это не бред, а реальность.
    Запись от CoderHuligan размещена 11.04.2019 в 12:15 CoderHuligan вне форума
  9. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Глобально, это когда не ограничено никакими рамками. Члены класса являются частью этого класса и вне его не существуют. Ничего, что есть в классе не является глобальным по отношению ни к чему.

    Методы класса видят поля класса потому, что и те и другие являются членами этого класса. Т.е. вещи находятся на одном уровне видимости друг для друга.
    Запись от Usaga размещена 11.04.2019 в 09:30 Usaga на форуме
  10. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Avazart Просмотреть комментарий
    Они не будут глобальными, а будут локальными т.е. ограниченными пространством класса и временем жизни объекта.
    Но методы напрямую работают с переменными. Получается что эти переменные, которые локальны для класса, являются глобальными для его методов по умолчанию. Получаем связность методов со своим классом.
    Запись от CoderHuligan размещена 11.04.2019 в 09:19 CoderHuligan вне форума
  11. Старый комментарий
    Аватар для Avazart
    Начала орхетектуры.
    Цитата:
    я не настолько принципиален, поэтому всегда предпочту писать:
    И о том же говорю, Вы еще тот извращенец )))
    Запись от Avazart размещена 10.04.2019 в 21:08 Avazart вне форума
  12. Старый комментарий
    Аватар для Avazart
    Начала орхетектуры.
    Цитата:
    Если глобальных вообще не должно быть, то почему они есть в любом классе (внутри класса)? Скажу по секрету, что они там для удобства.
    Прдон но эта формулировка для тупых.
    Умный же поймет что их должно быть как можно меньше. Исходя из мной описанного Выше правила.

    Цитата:
    Если глобальных вообще не должно быть, то почему они есть в любом классе (внутри класса)? Скажу по секрету, что они там для удобства.
    Они не будут глобальными, а будут локальными т.е. ограниченными пространством класса и временем жизни объекта.

    Т.е. прдон но Вы несете какую - то ню.
    Запись от Avazart размещена 10.04.2019 в 21:02 Avazart вне форума
    Обновил(-а) Avazart 10.04.2019 в 21:05
  13. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Я к тому, что методы объекта не надо передавать. Там, где он принимается, эти методы уже есть. Или они там не нужны (что ещё лучше). Простой пример: сериализация и обмен между разными системами.
    Запись от Usaga размещена 10.04.2019 в 13:57 Usaga на форуме
  14. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Вы, когда книгу кому-то даёте, и руки в комплекте прикладываете, которые потом будут страницы перелистывать?
    У меня всегда руки одно, а книга другое. У меня нет обьект - "книга-руки". У меня есть обьект "Книга", без рук. У меня не книга читает саму себя, а книгу читает кто-то.
    Запись от CoderHuligan размещена 10.04.2019 в 13:37 CoderHuligan вне форума
  15. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Цитата:
    Я имел в виду глобальность внутри обьекта. При наследовании к тому же глобальность расширяется.
    Глобальность глобальна на уровне всего приложения и рамками класса не ограничивается. Иначе это не глобальность.

    Цитата:
    В JS есть такое понятие, как функциональный литерал. Это когда переменной присваивается функция, а фактически её строковое представление.
    Никаких строковых представлений нет. Переменная ссылается на функцию как есть. Без промежуточных строковых\текстовых преставлений.

    Цитата:
    А то не нравится, что обьект выходит не единой сущностью
    Ещё как выходит. Объект - только его состояние и ничего больше. Методы общие для всего класса целиком и частью состояния не являются. Поэтому всё правильно тут. Вы, когда книгу кому-то даёте, и руки в комплекте прикладываете, которые потом будут страницы перелистывать?
    Запись от Usaga размещена 10.04.2019 в 12:46 Usaga на форуме
  16. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Так, что никакой глобальности.
    Я имел в виду глобальность внутри обьекта. При наследовании к тому же глобальность расширяется.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    В JS функции - это функции, а литералы - это литералы, строковые или объектные. Разные вещи. Не путайте.
    В JS есть такое понятие, как функциональный литерал. Это когда переменной присваивается функция, а фактически её строковое представление.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    Да и в любом языке (включая JS) такое есть. Пересылается только состояние объекта. Его методы не являются состоянием и никуда не пересылаются. Тут всё честно и корректно, что именно вам в этом не нравится?
    А то не нравится, что обьект выходит не единой сущностью, которую нужно ещё поделить на составляющие с тем, чтобы одну часть переслать по сети. Искусственное изобретение, и дополнительные телодвижения.
    Запись от CoderHuligan размещена 10.04.2019 в 12:00 CoderHuligan вне форума
  17. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Цитата:
    Зато имеют методы родного..
    Только свои собственные. К методам того же класса без ссылки на этот класс они обратиться не могут. Так, что никакой глобальности.

    Цитата:
    Можно, ведь там функции - литералы, по сути строки
    В JS функции - это функции, а литералы - это литералы, строковые или объектные. Разные вещи. Не путайте.

    Цитата:
    Обьект это то, что можно переслать по сети, загрузить на диск или с диска, и т.д.
    Да и в любом языке (включая JS) такое есть. Пересылается только состояние объекта. Его методы не являются состоянием и никуда не пересылаются. Тут всё честно и корректно, что именно вам в этом не нравится?
    Запись от Usaga размещена 10.04.2019 в 06:04 Usaga на форуме
  18. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Другие объекты, хоть и того же класса, к ним доступа не имеют
    Зато имеют методы родного..
    Цитата:
    В том же JavaScript могу. И это реальный геморрой.
    Можно, ведь там функции - литералы, по сути строки, но это вам не поможет если нам нужно использовать функцию как общеразделяемый компонет.. Общеразделяемый всей системой.. Для меня слово инкапсуляция это не тогда, когда пытаются скрыть в классе переменные и функции от остального мира, это можно сделать и простым нэймспейсом. Для меня это то, что позволяет изменить что-либо в одном месте, не меняя это в другом, вот и вся "капсуляция".. А сейчас классы в ооп используют только как алтер_эго модульного принципа, т.е. как хранилища процедур и подчинённых переменных, которые связаны по смыслу использования. Обьектами там и не пахнет.. Хотя все думают, что оперируют обьектами, но на самом деле создают себе в будущем большие проблемы. Обьект это то, что можно переслать по сети, загрузить на диск или с диска, и т.д. Пересылать обьект по сети вместе с его методами это сто-то с чем-то.
    Запись от CoderHuligan размещена 09.04.2019 в 14:39 CoderHuligan вне форума
  19. Старый комментарий
    Аватар для Usaga
    Начала орхетектуры.
    Члены класса не являются "глобальными". Другие объекты, хоть и того же класса, к ним доступа не имеют, если таковое не предоставляется самим классом. Это ниразу не глобальность.

    Цитата:
    Вы не может вот так просто взять какой-либо метод, и использовать его в другом месте, т.к. он связан со своим контекстом.
    В том же JavaScript могу. И это реальный геморрой. Адский.
    Запись от Usaga размещена 09.04.2019 в 14:22 Usaga на форуме
  20. Старый комментарий
    Аватар для CoderHuligan
    Начала орхетектуры.
    Цитата:
    Сообщение от Usaga Просмотреть комментарий
    И "глобальным" они становятся, если сделать их статическими, что часто - фу.
    Речь и идёт только о том, что в классе..
    Внутри класса - глобальные переменные, которые доступны, так или иначе, через this(неявный указатель на текущий экземпляр). Вы не может вот так просто взять какой-либо метод, и использовать его в другом месте, т.к. он связан со своим контекстом. Если контекст(скоуп) глобален, по настоящему, по пацански, то это возможно. Без глобал переменных мы вынуждены передавать сверху вниз по цепочке все параметры, которые нужны подчинённому методу, а это боль в заднице. Поэтому и придумали классы, чтобы не так болело в нижнем месте. Но это всё равно не правильно..
    Запись от CoderHuligan размещена 09.04.2019 в 13:34 CoderHuligan вне форума
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.