fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Как лучше всего изучать объектно-ориентированное программирование?

как лучше всего изучать объектно-ориентированное программирование?

Я хочу знать лучший возможный способ изучения объектно-ориентированного программирования. прямо сейчас я изучаю php здесь и испытываю трудности в изучении объектно-ориентированной части в php. нужно какое-то руководство от кого-то, кто прошел этап, на котором я борюсь сейчас.

2 ответа

Люк Глазебрук
Люк Глазебрук

Лучший способ изучить ООП – это просто писать объектно-ориентированные программы. Пересмотрите программное обеспечение, которое вы уже переписали, и посмотрите, как вы могли бы переделать его, чтобы использовать концепции и практику ООП. Кроме того, придумайте несколько примеров из реальной жизни, чтобы отработать такие вещи, как объекты и наследование. Например, почему бы не создать класс автомобиля и не унаследовать его от класса под названием vehicles, который содержит некоторые общие методы и свойства автомобиля.

Попробуйте понять, как это сделать. Я знаю, что это может показаться сложным, но один из лучших способов научиться чему-то подобному – просто погрузиться в глубину и посмотреть, что вы сможете понять.

Если у вас есть еще вопросы, не стесняйтесь их задавать!

Софт Сингх
Софт Сингх

Спасибо, Люк, мне нравится, как вы участвуете в жизни сообщества и помогаете студентам вроде меня. И я ценю твои усилия от всего сердца. Продолжай в том же духе, дружище…

Люк Глазебрук
Люк Глазебрук

Большое спасибо, Джасмохан, я очень ценю ваши добрые слова!

Эрик МакКлинток
Эрик МакКлинток

На этот вопрос сложно дать удовлетворительный ответ. Надеюсь, что другие ответят своим опытом, так что у вас будет широкий спектр мнений! Объектно-ориентированное программирование – это довольно абстрактная концепция, и ее трудно понять, пока вы не окажетесь в ситуации, когда ее использование принесет вам пользу. Небольшие программы, которые на самом деле не являются живыми, дышащими вещами (например, они не динамичны и не нуждаются в обработке изменений), не получат столько пользы от практики, применяемой в ООП (объектно-ориентированном программировании), сколько большая программа, которая постоянно меняется и обрабатывает новую информацию.

Для меня трудной частью объектно-ориентированного программирования (которая, как правило, является трудной частью изучения большинства вещей в программировании) было понимание аспекта “почему”. Зачем существует ООП; какой цели оно служит? К счастью, это легче понять, когда мы узнаем и усвоим четыре основных принципа ООП: абстракция, инкапсуляция, наследование и полиморфизм. При этом, конечно, сами эти термины могут быть довольно запутанными и казаться абстрактными, и на самом деле лучший способ полностью понять их – это вникнуть и начать возиться с кодом. Ниже приведены краткие определения этих терминов/понятий:

1) Абстракция – это процесс сокрытия деталей и раскрытия только основных характеристик определенной концепции или объекта без включения фоновых деталей или объяснений. В качестве простого примера можно привести видеоигру, например, Super Mario Bros. Вы знаете, что нажатие кнопки А заставит Марио прыгнуть, но вам не нужно знать подробности того, КАК нажатие этой кнопки заставит Марио прыгнуть. Единственная важная информация, которая вам здесь нужна, и, следовательно, единственная информация, которая должна быть доступна вам как игроку, – это тот факт, что “нажатие кнопки A заставит Марио прыгнуть”.

2) Инкапсуляция – это понятие довольно тесно связано с абстракцией, и существует множество статей, в которых пытаются объяснить разницу и связь между ними. Однако, по собственному определению, инкапсуляция – это практика сокрытия внутренней работы классов и объектов от внешних сил, делая их доступными только через методы, обычно называемые “геттерами” и “сеттерами”. Это помогает предотвратить случайное (или намеренное) изменение/потенциальное уничтожение данных и функций внутри данного класса/объекта из внешних источников, что может привести к серьезным повреждениям в несметном количестве мест вашей программы. Разрешая доступ к данным только через методы, эти классы и объекты могут эффективно определить/ограничить способ (способы), которым внешние источники могут использовать или изменять содержащиеся в них данные, основываясь на том, что делают эти доступные методы. Это освобождает нас от беспокойства о том, что мы можем нарушить другой код в нашей программе, который использует наш конкретный класс или объект, даже если мы сделаем изменения в другом месте.

3) Наследование – это способность классов или объектов наследовать интерфейс и, возможно, реализацию родительского класса или объекта, делая их “под” и “супер” классами, соответственно. Легкий способ понять, что такое наследование, – это быстрый пример с использованием общего суперкласса Animal. Допустим, у нас есть суперкласс Animal, который содержит некоторую общую информацию, которая, скорее всего, будет общей для всех животных, например, свойство для типа животного и вес животного. Все животные будут иметь тип, и все животные будут иметь вес. Однако не все животные смогут летать, поэтому здесь мы можем создать подкласс животных, назовем его Птица, которому нужна способность летать. Птице, как и всем животным, необходимо знать свой тип и вес, поэтому сначала она наследует их от суперкласса Animal, а затем расширяет его функциональность, включая свойство или, возможно, метод, определяющий способность птицы летать. Суперкласс является общим, а подклассы, которые наследуются от него, могут быть более конкретными.

4) Полиморфизм – это греческий термин, который означает “одно имя, много форм”, что как раз и относится к данной концепции. Как абстракция и инкапсуляция тесно связаны между собой, так и наследование и полиморфизм (и инкапсуляция). В ООП полиморфизм позволяет выполнять одно и то же действие разными способами в зависимости от того, где оно используется. Он описывает схему, в которой классы имеют различную функциональность, но при этом используют один и тот же интерфейс. По аналогии с предыдущим примером суперкласса Animal и подкласса Bird: создадим еще один подкласс под названием Dog. И собаки, и птицы издают звуки, но собаки лают, а птицы кричат. У каждого подкласса будет метод с именем makeSound(), и хотя они называются одинаково, они будут давать разные результаты. Метод makeSound() собаки будет лаять, а метод makeSound() птицы – гавкать.

Эти концепции могут быть пугающими для понимания, даже когда вы станете более знакомы с тем, как писать программы для их использования. ООП – это то же самое, что и изучение любого другого аспекта программирования: его освоение займет много времени. Тем не менее, вы сможете начать понимать и использовать его довольно быстро. Однако со временем и практикой вы станете лучше разбираться в нем и сможете писать более эффективные программы, используя эти принципы.

К сожалению, реальность такова, что не существует какого-то одного проверенного и верного, лучшего, конечного и универсального метода изучения этих или любых других концепций, помимо простого сидения с книгой или видео, изучения и практики. У каждого человека свой стиль обучения, и некоторые понятия будут легкими для одного человека и невероятно трудными для другого. Практикуйтесь и не ограничивайте себя одним ресурсом. Treehouse феноменален, и если бы не этот сайт и его замечательные преподаватели и сообщество, я бы сегодня не работал. Но Treehouse – не единственный ресурс, который я использовала. Я также очень рекомендую серию книг Head First от O’Reilly Media, а также советую посмотреть другие онлайн-курсы, например, на Codecademy. Я давно не пользовался другими сайтами курсов (например, Codecademy), поэтому не могу сказать, есть ли там курсы по ООП, но проведите небольшое исследование, и вы легко наткнетесь на другие сайты, где есть курсы, которые вы можете пройти (некоторые бесплатные, некоторые платные). Открыв для себя несколько путей обучения, вы, вероятно, быстрее поймете эти сложные концепции, так как может быть очень полезно изучать одну и ту же информацию немного разными способами. Возможно, все, что вам понадобится, – это правильный пример объектов и концепций ООП, может быть, в виде автомобилей, или видеоигр, или спорта. Кто знает? Единственный способ узнать это – прыгнуть и потыкаться вокруг, и вскоре вы найдете то, что работает для вас 🙂 Лично я неравнодушен к играм, так что вот вам два примера из этой области: вот статья, которая объясняет ООП через использование

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *