Jump to content
  • 0

Вопрос по ООП


Fenix
 Share

Question

10 answers to this question

Recommended Posts

  • 0

Так был же уже этот вопрос!

Разрабатываешь структуру класса типа

1) Подключение к базе
2) функция1(), добавляющая запись в базу
3) функция2(), добывающая из базы данные1
4) функция3(), добывающая из базы данные2

Это абстрактный класс. Дальше какой-то программист (например, опять ты) реализует описанные тобой функции:

Файл1:
1) Подключение к MySQL
2) mysql_query($q1)
3) mysql_query($q2)
4) mysql_query($q3)

Файл2:
1) Подключение к PostgreSQL
2) pg_query($q1)
3) pg_query($q2)
4) pg_query($q3)

Файл3:
1) Открытие файла
2) fwrite()
3) fread1()
4) fread2()

В итоге тот, кто пишет основной функционал, работает через описанные тобой функции, и ему глубоко фиолетово, подключена работа с файлами, mysql или postgres, ты ему дал этот файл с описанием функций и передаваемыми параметрами, он его использует, а ты в это время описываешь различные реализации этих самых функций. И конечное приложение получает возможность работать с любыми базами данных простым подключением нужного класса, который уже описан в абстрактной части.

То же самое - любые API-функции, ты знаешь какие параметры им передать и чего от ниж ждать, а разработчик может менять их код хоть каждый день. Таким образом ты пользуешься абстрактным описанием.

Edited by Int
Link to comment
Share on other sites

  • 0
Так был же уже этот вопрос!

Разрабатываешь структуру класса типа

1) Подключение к базе
2) функция1(), добавляющая запись в базу
3) функция2(), добывающая из базы данные1
4) функция3(), добывающая из базы данные2

Это абстрактный класс. Дальше какой-то программист (например, опять ты) реализует описанные тобой функции:

Файл1:
1) Подключение к MySQL
2) mysql_query($q1)
3) mysql_query($q2)
4) mysql_query($q3)

Файл2:
1) Подключение к PostgreSQL
2) pg_query($q1)
3) pg_query($q2)
4) pg_query($q3)

Файл3:
1) Открытие файла
2) fwrite()
3) fread1()
4) fread2()

В итоге тот, кто пишет основной функционал, работает через описанные тобой функции, и ему глубоко фиолетово, подключена работа с файлами, mysql или postgres, ты ему дал этот файл с описанием функций и передаваемыми параметрами, он его использует, а ты в это время описываешь различные реализации этих самых функций. И конечное приложение получает возможность работать с любыми базами данных простым подключением нужного класса, который уже описан в абстрактной части.

То же самое - любые API-функции, ты знаешь какие параметры им передать и чего от ниж ждать, а разработчик может менять их код хоть каждый день. Таким образом ты пользуешься абстрактным описанием.

Можно просто обьяснить зачем он нужен.

Link to comment
Share on other sites

  • 0

Я сложно объяснил? о_О Он нужен чтобы один человек не тормозил всю разработку, и чтобы вся команда разработчиков пользовалась одним стандартом. Это достаточно простое объяснение?

Могу на примерах:

Я тебе говорю, что тебе нужно написать функцию для онлайн-игры, которая будет высчитывать результат матча между виртуальными футбольными командами, а я тем временем пишу функции, которые вычисляют характеристики игроков, погодные условия и прочее. Ты заранее не знаешь, что я напишу, поэтому написал 1000 строк кода, где много раз вызываешь $class->GetFootbolistParams($fID), имея в виду получение параметров футболиста с нужным ID. А потом оказывается, что я написал такую функцию, которая называется FootbolistGetParam и она вернёт результат только если указан порядковый номер матча, для которого ведётся расчёт. В результате ты садишься и переписываешь все свои 1000 строчек кода, вставляя ещё и подсчёт номера матча и меняя имена функции. То же самое со всеми остальными.

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

Это пример для двух человек. А если бы разработчиков было 10, и каждый писал бы свой класс, который взаимодействовал бы со всеми остальными, но никто бы не знал ничего о том, что и как пишут другие?

Edited by Int
Link to comment
Share on other sites

  • 0
Я сложно объяснил? о_О Он нужен чтобы один человек не тормозил всю разработку, и чтобы вся команда разработчиков пользовалась одним стандартом. Это достаточно простое объяснение?

Я просил не в этом ключе сказать зачем. Зачем он нужен в програмировании, а не в жизни

Link to comment
Share on other sites

  • 0

ООП - общество обкуренных программистов :lol: видимо чтобы понять зачем нужны абстрактные классы и как их использовать, надо обкуриться, чтобы абстрагироваться от окружающего мира и тогда к тебе придут эти знания :)

Edited by gesandte
Link to comment
Share on other sites

  • 0

Просто не пользуйся пока не почувствуешь необходимость, в чём проблема-то? Если не знаешь куда применить абстрактные классы, значит у тебя просто нет такой потребности, вот и забей на них. Когда появится потребность, ты про них вспомнишь.

Link to comment
Share on other sites

  • 0
Да ладно тебе, я бы рассказал про ооп, да сам в него въехать не как не могу...(((((((((

Так молчал бы.

Просто не пользуйся пока не почувствуешь необходимость, в чём проблема-то? Если не знаешь куда применить абстрактные классы, значит у тебя просто нет такой потребности, вот и забей на них. Когда появится потребность, ты про них вспомнишь.

В том то и дело. Если я не знаю цель их применения, то я про них не вспомню, когда они будут нужны. Соотвественно я должен понять, зачем их применяют.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy