yurich_v
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Просто это получается прога, в которой все крутится вокруг данных, процедурная. А не прога в которой главное действие, объектная. Вот мне и не понятно как все построить. И как в такой задаче обойтись без глобальных переменных. Еще меня очень сильно напрягает работа с файлами. Что, 2 функции объединять в класс? Театр абсурда какой-то... Все же должно иметь смысл. | mozgodrocha Блин, ну жалко же ж пацана! Диагноз понятен: хочется сделать по-уму и красиво, а получается как делал до этого:-) Запрет на глобальные переменные -- это вовсе не главный постулат ООП, как это может показаться. В любой программе существуют и будут существовать переменные, доступ к которым необходим во время всего действия программы. ООП только требует, чтобы доступ к таким переменным осуществлялся только через методы объекта (класса), чьим полем она и является. Т. е., ну есть же у тебя в проге общие данные -- границы графика, допустим. Ну вот и делай класс TPlot, у которого есть ПРИВАТНОЕ поле int Хмах, которое по запросу любого клиента возвращает метод класса int ТPlot::GetMax. Если отвлечься от частностей, можно сказать, что в экземляре объекта этот самый Хмах и есть глобальная переменная. Но фокус то в том, что доступ к такой "глобальной переменной" имеет ТОЛЬКО ее владелец. И изменить ее может только он, а не всякая шушера (ненароком и случайно), которой понадобился этот самый Хмах по ходу дела! НЕ сочти это за эстетский совет тертого программера (сам такой): тебе просто надо взять хорошую старую книгу об ООП, прочитать хотя бы первую треть и сделать пару объектных учебных примеров на предмет тех же излюбленных геометрических примитивов: точки, линии, окружности. Это даст гораздо больше пользы, чем юзание Билдера в поисках истины:-) ООП -- это, без балды, другое мышление, не имеющее ничего общего со структурным программированием, и окошками, кстати, тоже. Ну а касаемо самого СБилдера, то он скорее мешает въехать в ООП. У него своя логика, есть свои объекты, та же главная форма, например. Как удивился мой старый друг -- веб программер: "А что, если у меня окошки, то это не объктное программирование?!". Десять раз нет -- совсем не обязательно объектное. Т. е., когда ты неопытен, и пытаешься сделать красивую (не внешне) программу -- тебе надо приложить определенные усилия, чтобы не дать Билдеру (с его кучей возможностей и внутренней логикой и собственными классами), сбить тебя с панталыку. Что, собственно и имеем:-) Вот это и есть причина твоих метаний. Так что брось на пару дней свою прогу (она же работает?), и сделай кошку, которая -- та же собака, но мяукает:-) ...Ну а если отвечать на твой вопрос в частности, то готовых рецептов тут нет. Но, в самом общем случае, проще всего иногда бывает поступать так: кто данные показывает, тот ими и владеет. |