Теперь можно приступить к работе с поведением объектов. Оно реализуется с помощью методов — специальных блоков кода, которые позволяют избежать повторений в проекте.
Методы являются аналогами функций (возвращают значение) и процедур (не возвращают), но с той разницей, что они являются частью какого-то класса. Например, можно в классе Character создать метод Move (), который будет отвечать за движение персонажа.
public void Move(string direction)
{ switch (direction) { case «forward»: this.x++; break; case «backward»: this.x—; break; case «up»: this.y++; break; case «down»: this.y—; break;
}
}
Сначала указывается уровень доступа public, затем тип возвращаемого значения (в данном случае используется void, что говорит компилятору о том, что ничего возвращать не нужно). Затем идет название метода и круглые скобки.
- Внутри скобок указываются аргументы, которые принимает метод (в данном случае направление движения), — от переданных аргументов зависит результат работы метода.
- Вот пример вызова метода:
Character hero = new Character(); string command = string.Empty; while (command != «exit»)
{ Console.WriteLine($»You are at {hero.Coordinates}. Where to go?»); command = Console.ReadLine();
hero.Move(command);
}
Пользователь видит свои координаты и вводит направление движения, а персонаж двигается с помощью метода Move (). Всё это повторяется, пока не будет введена команда exit.
Вот как это выглядит:
- Если же нужно, чтобы метод что-то возвращал, то указывается его тип и используется оператор return:
public bool Collide(Character ch)
{ if (ch.X == this.x && ch.Y == this.y) { return true; } else { return false;
}
}
Этот метод принимает в качестве аргумента объект класса Character и сравнивает координаты. Если они равны, то метод возвращает значение true, а иначе — false.
Вот как это можно использовать:
Character hero = new Character(); Character npc = new Character(); bool collide = hero.Collide(npc); if (collide)
{ Console.WriteLine(«Objects are on the same position.»);
}
else
{ Console.WriteLine(«Objects are not on the same position.»);
} Console.ReadKey();
- Приведенная выше программа сравнит координаты двух объектов и выведет результат. Так как объекты создаются с одинаковыми полями, то они будут равны:
Источник: https://skillbox.ru/media/code/oop_chast_1_chto_takoe_klassy_i_obekty/
Бесплатный курс «Объектно-ориентированное программирование»
На этой неделе стартовал новый бесплатный курс для новичков, посвященный объектно-ориентированному программированию. Поговорим, что такое ООП, и с чем разработчики его едят.
Объектно-ориентированное программирование (ООП) – парадигма программирования, в которой основными концепциями являются понятия объектов и классов. ООП применяется для программирования и проектирования программных продуктов, и главное в его применении, как ни странно, уметь думать объектно-ориентированным способом.
Это как?
Просто: сначала вы должны научиться правильно думать, а именно: точно выбирать нужные абстракции и аналогии для выполнения конкретной задачи. Именно в правильном объектном мышлении в первую очередь заключается понимание ООП. ООП представляет собой набор инструментов, поэтому необходимо научиться правильно ими пользоваться и выбирать нужный для текущей задачи.
«За что я люблю объектно-ориентированное программирование, — говорит преподаватель курса Евгений Картавец, — это за то, что разработка превращается в процесс написания «кирпичиков», каждый из которых довольно прост, но при этом из этих кирпичей впоследствии можно сложить какое-то серьёзное здание».
Для прохождения нового бесплатного курса по ООП понадобится:
- Среда разработки. В качестве неё возьмем Visual Studio Community с официального сайта. Эта версия программы бесплатна, поэтому просто качаем ее и устанавливаем к себе на ПК.
- Система контроля версий. Берём Git. Для облегчения работы с Git посмотрите курс «Git. Быстрый старт».
«Этот курс я считаю своим большим достижением. Материал с одной стороны весьма непрост для новичков, с другой стороны — является невероятно важным для любого программиста, — говорит преподаватель курса Евгений, — курс ориентирован на новичков, которые уже освоили «Основы программирования» и готовы идти дальше».
В данном курсе изучается тема, которая весьма важна для любого разработчика, – принципы объектно-ориентированного программирования. Вы не сможете обойтись без этих знаний, если изучаете или планируете изучать любой язык программирования высокого уровня.
Основные понятия в объектно-ориентированном программировании – это объекты и классы.
Основные принципы – наследование, полиморфизм, инкапсуляция и абстракция.
ООП возникло в результате развития процедурного программирования. В процессе курса Вы узнаете, что такое процедурный подход, в каких случаях он применяется, а также минусы данного подхода по сравнению с объектно-ориентированным программированием.
В течение всего курса вы будете разрабатывать конкретный продукт – игру «Змейка». Для написания её вы будете использовать язык С#. Большой плюс состоит в том, что даже если вы изучаете другой язык программирования – ничего страшного, ведь принципы ООП для любого языка одинаковы.
Вы научитесь создавать и использовать классы, методы и объекты. Класс в ООП можно представить как совокупность элементов, или как некую категорию, или как понятие множества в математике. Объект же является конкретным представителем класса, а метод – это функции или процедуры, состоящие из операторов для выполнения определенного действия.
При прохождении курса узнаете, что такое конструкторы, и научитесь их писать, рассмотрите один из ключевых принципов ООП – инкапсуляцию – свойство языка программирования, которое даёт пользователю возможность не задумываться о реализации программного компонента на внутреннем уровне (а-ля «черный ящик»). Пользователь просто использует объект, обращаясь к нему через предоставляемый интерфейс.
Для того, чтобы писать качественные программы, вы должны понимать, как работает программа изнутри, т.е. что происходит внутри «железа» в тот момент, когда вы пишете код. Как используется оперативная память, каким образом что куда попадет и где хранится. Целый урок курса будет посвящен этой теме, весьма необходимой разработчику.
Пройдёмся по классам стандартных библиотек С#, изучим наследование — свойство объектов порождать потомков, которое обеспечивает ООП значительную гибкость. Изучая всё это на примерах, вы незаметно для себя будете учиться писать красивый и компактный код, при этом собственными руками создавая при этом игру.
Вопросы преподавателю:
Почему именно «Змейка»?
— На «Змейку» меня вдохновила моя жена. Мы вместе учились на факультете ВМиК МГУ, и данная программа была домашним заданием. Супруга напомнила мне, насколько это было круто и увлекательно, писать свою собственную игрушку.
Тогда я написал программу кое-как, несмотря на то, что она работала. Только спустя годы работы программистом я понял, как можно написать ИДЕАЛЬНУЮ змейку, получив максимально читаемый, масштабируемый код.
И насколько здорово эта программа отражает принципы ООП, если разрабатывать её правильно»
Куда двигаться дальше?
— По окончании курса можно будет выбрать любое направление: изучать Java, Python, C++, C#, Ruby, Php — практически в любом языке вам придется столкнуться с ООП и использовать эти принципы при написании ЛЮБОЙ программы. Понимание базовых принципов ООП поможет вам с бОльшей легкостью освоить любой язык программирования.
Тем, кто хочет стать программистом, рекомендуем профессию «Веб-разработчик».
Источник: https://geekbrains.ru/posts/oop_cource
Объектно-ориентированное программирование : классы и объекты
Объектно-ориентированное программирование (ООП) позволяет разложить проблему на составные части, каждая из которых становится самостоятельным объектом. Каждый из объектов содержит свой собственный код и данные, которые относятся к этому объекту.
Любая программа, написанная на языке ООП, отражает в своих данных состояние физических предметов либо абстрактных понятий – объектов программирования, для работы, с которыми она предназначена. Все данные об объекте программирования и его связях с другими объектами можно объединить в одну структурированную переменную. В первом приближении ее можно назвать объектом.
С объектом связывается набор действий, иначе называемых методами.
С точки зрения языка программирования набор действий или методов – это функции, получающие в качестве обязательного параметра указатель на объект и выполняющие определенные действия с данными объекта программирования.
Технология ООП запрещает работать с объектом иначе, чем через методы, таким образом, внутренняя структура объекта скрыта от внешнего пользователя.
Описание множества однотипных объектов называется классом.
Объект – это структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии.
Класс – это описание множества объектов программирования (объектов) и выполняемых над ними действий.
Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области решаемой задачи.
Основные понятия объектно-ориентированного программирования
Любая функция в программе представляет собой метод для объекта некоторого класса. Класс должен формироваться в программе естественным образом, как только в ней возникает необходимость описания новых объектов программирования.
Каждый новый шаг в разработке алгоритма должен представлять собой разработку нового класса на основе уже существующих. Вся программа в таком виде представляет собой объект некоторого класса с единственным методом run (выполнить).
Программирование «от класса к классу» включает в себя ряд новых понятий. Основными понятиями ООП являются
- инкапсуляция;
- наследование;
- полиморфизм.
Инкапсуляция данных (от «капсула») – это механизм, который объединяет данные и код, манипулирующий с этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В ООП код и данные могут быть объединены вместе (в так называемый «черный ящик») при создании объекта.
Внутри объекта коды и данные могут быть закрытыми или открытыми. Закрытые коды или данные доступны только для других частей того же самого объекта и, соответственно, недоступны для тех частей программы, которые существуют вне объекта.
Открытые коды и данные, напротив, доступны для всех частей программы, в том числе и для других частей того же самого объекта.
Наследование. Новый, или производный класс может быть определен на основе уже имеющегося, или базового класса.
При этом новый класс сохраняет все свойства старого: данные объекта базового класса включаются в данные объекта производного, а методы базового класса могут быть вызваны для объекта производного класса, причем они будут выполняться над данными включенного в него объекта базового класса. Иначе говоря, новый класс наследует как данные старого класса, так и методы их обработки.
Если объект наследует свои свойства от одного родителя, то говорят об одиночном наследовании. Если объект наследует данные и методы от нескольких базовых классов, то говорят о множественном наследовании.
Пример наследования – определение структуры, отдельный член которой является ранее определенной структурой.
Полиморфизм – это свойство, которое позволяет один и тот же идентификатор (одно и то же имя) использовать для решения двух и более схожих, но технически разных задач. Целью полиморфизма, применительно к ООП, является использование одного имени для задания действий, общих для ряда классов объектов. Такой полиморфизм основывается на возможности включения в данные объекта также и информации о методах их обработки (в виде указателей на функции). Будучи доступным в некоторой точке программы, объект , даже при отсутствии полной информации о его типе, всегда может корректно вызвать свойственные ему методы.
Полиморфная функция – это семейство функций с одним и тем же именем, но выполняющие различные действия в зависимости от условий вызова.
Например, нахождение абсолютной величины в языке Си требует трех разных функций с разными именами:
int abs(int);long int labs(long int);double fabs(double);
В C++ можно описать полиморфную функцию, которая будет иметь одинаковое имя и разные типы и наборы аргументов.
Назад: Язык C++
Источник: https://prog-cpp.ru/oop/
Ооп в php: продвинутый курс
В данном курсе вы научитесь программировать на PHP в объектно-ориентированном стиле. Данное умение просто необходимо для разработки проектов, в которых участвует более одного человека – то есть на настоящей работе.
В ходе курса вы ознакомитесь с основами и принципами ООП в PHP для начинающих. Узнаете что такое классы и объекты. Далее мы изучим такие понятия как инкапсуляция, наследование и полиморфизм – это три кита, на которых стоит всё ООП.
Кроме того, вы познакомитесь с архитектурным паттерном MVC, который является фундаментальным для построения подавляющего большинства всех веб-приложений.
Разумеется, что это за продвинутый курс, если в нём не будет уроков о работе с базой данных. Здесь вы узнаете, как правильно работать с MySQL, используя технологию ORM и паттерн ActiveRecord.
Ну и конечно, всё это было бы неинтересно и непонятно без хороших примеров. Поэтому в ходе прохождения курса мы с вами самостоятельно напишем мини-фреймворк, на основе которого сделаем настоящий блог!
К урокам есть домашние задания, которые я ежедневно проверяю. По факту вы платите не столько за уроки, сколько за мою работу.
Все ученики имеют доступ к общему Telegram-чату, в котором можно задать вопросы и получить ответ в течение 10 минут.
Не, ну Вы видели эти цены на курсы в десятки тысяч рублей? У меня Вы пройдёте обучение по цене, сравнимой с покупкой книги.
Если Вас что-то не устроит — просто напишите мне любым удобным способом. И я верну Вам деньги в тот же день.
Привет! Меня зовут Артём Ивашкевич. Я работаю веб-разработчиком более двух с половиной лет. Сейчас я работаю в компании Зарплата.ру — это крупный проект, над которым трудятся более 50 разработчиков, его ежемесячная посещаемость более 4 млн человек.
В свободное время я обучаю программированию других людей, потому что мне это просто нравится. Если Вам интересно узнать, как я к этому пришёл, прочитайте историю как я стал программистом.
Программирование является довольно сложным делом, освоение которого требует особой внимательности и терпения. Особенно часто при изучении программирования возникает проблема отсутствия направления движения и не совсем четкое понимание конечной цели.
Курс ООП в PHP для начинающих позволяет обучить лучшим практикам и современным инструментам программирования. Также здесь можно научиться разрабатывать сложный работающий проект. Для осуществления веб-программирования на достойном уровне и понимания процесса разработки сайтов важно также получить необходимое количество актуальной информации по данному вопросу.
Этот продвинутый курс PHP предназначается для людей, которые имеют некоторый опыт полупрофессиональной разработки сайтов. На этих занятиях будет уделяться особое внимание разработке правильной и продуманной архитектуры сайта. Это позволит легко изменить и расширить проект при необходимости.
Для обучения созданию современной архитектуры сайтов невозможно обойтись без основ объектно-ориентированного программирования на PHP. Вначале у многих разработчиков веб-приложений объектно-ориентированный подход вызывает небольшое недоумение, ведь более привычным для них является процедурный подход.
Но курс ООП в PHP для чайников поможет быстро справиться с данными трудностями. На уроках ООП в PHP будут рассмотрены теоретические аспекты, после чего пройдет подробное обучение их применению на практике.
В течение всего периода курсов последовательно будут изучаться основы ООП, что позволит создавать приложения на PHP в объектно-ориентированном стиле с нуля.
Пройдя подобный продвинутый курс, можно легко разобраться в довольно сложном объектно-ориентированном программировании с нуля на PHP. Слушатели познакомятся также с такими понятиями, как классы, объекты и узнают об отличиях между ними.
Кроме того, на курсах их познакомят со свойствами, методами и константами класса.
Данная обучающая программа позволяет использовать наследование классов для того, чтобы создаваемые веб-приложения были более удобными и подчинялись строгой логике.
Также каждый продвинутый курс создает все условия для получения разветвленных иерархий классов, переопределения методов и расширения их функционала. В результате этого появляется возможность легко создавать абстрактные классы.
Обучение на данных курсах является уникальным решением для использования интерфейсов во всех необходимых случаях и более точного понимания их смысла. Также на курсах большое внимание уделяется автозагрузке классов, что исключает образование длинных списков файлов при их подключении.
Наш продвинутый курс дает полное представление о функциях автозагрузки и использовании пакетного менеджера Composer для решения подобных задач.
Какие возможности получают ученики после курсов?
Для разработки многих современных сайтов и web приложений полностью или частично используются готовые решения на основе классов, объектов или пакетов. Они соответствуют определённым международным стандартам.
При владении основными общими принципами программирования из объектно-ориентированного PHP разработчик может легко и быстро переходить из одной системы в другую.
Также важно иметь знания проектирования пакетов и платформ.
Продвинутый курс PHP предназначен для тех, кто имеет знания основного курса и стремится к повышению своего профессионализма в разработке до уровня junior PHP developer. Кроме того, обучение позволит приобрести необходимые навыки работы в команде.
Источник: https://WebShake.ru/oop-v-php-prodvinutyj-kurs
Объектно-ориентированное программирование: на пальцах
Статья не мальчика, но мужа.
Настало время серьёзных тем: сегодня расскажем про объектно-ориентированное программирование, или ООП. Это тема для продвинутого уровня разработки, и мы хотим, чтобы вы его постигли.
Из этого термина можно сделать вывод, что ООП — это такой подход к программированию, где на первом месте стоят объекты. На самом деле там всё немного сложнее, но мы до этого ещё доберёмся. Для начала поговорим про ООП вообще и разберём, с чего оно начинается.
Обычное программирование (процедурное)
Чаще всего под обычным понимают процедурное программирование, в основе которого — процедуры и функции. Функция — это мини-программа, которая получает на вход какие-то данные, что-то делает внутри себя и может отдавать какие-то данные в результате вычислений. Представьте, что это такой конвейер, который упакован в коробочку.
Например, в интернет-магазине может быть функция «Проверить email». Она получает на вход какой-то текст, сопоставляет со своими правилами и выдаёт ответ: это правильный электронный адрес или нет. Если правильный, то true, если нет — то false.
Функции полезны, когда нужно упаковать много команд в одну.
Например, проверка электронного адреса может состоять из одной проверки на регулярные выражения, а может содержать множество команд: запросы в словари, проверку по базам спамеров и даже сопоставление с уже известными электронными адресами. В функцию можно упаковать любой комбайн из действий и потом просто вызывать их все одним движением.
Что не так с процедурным программированием
Процедурное программирование идеально работает в простых программах, где все задачи можно решить, грубо говоря, десятком функций. Функции аккуратно вложены друг в друга, взаимодействуют друг с другом, можно передать данные из одной функции в другую.
Например, вы пишете функцию «Зарегистрировать пользователя интернет-магазина». Внутри неё вам нужно проверить его электронный адрес.
Вы вызываете функцию «Проверить email» внутри функции «Зарегистрировать пользователя», и в зависимости от ответа функции вы либо регистрируете пользователя, либо выводите ошибку.
И у вас эта функция встречается ещё в десяти местах. Функции как бы переплетены.
Тут приходит продакт-менеджер и говорит: «Хочу, чтобы пользователь точно знал, в чём ошибка при вводе электронного адреса». Теперь вам нужно научить функцию выдавать не просто true — false, а ещё и код ошибки: например, если в адресе опечатка, то код 01, если адрес спамерский — код 02 и так далее. Это несложно реализовать.
Вы залезаете внутрь этой функции и меняете её поведение: теперь она вместо true — false выдаёт код ошибки, а если ошибки нет — пишет «ОК».
И тут ваш код ломается: все десять мест, которые ожидали от проверяльщика true или false, теперь получают «ОК» и из-за этого ломаются.
Теперь вам нужно:
- либо переписывать все функции, чтобы научить их понимать новые ответы проверяльщика адресов;
- либо переделать сам проверяльщик адресов, чтобы он остался совместимым со старыми местами, но в нужном вам месте как-то ещё выдавал коды ошибок;
- либо написать новый проверяльщик, который выдаёт коды ошибок, а в старых местах использовать старый проверяльщик.
Задача, конечно, решаемая за час-другой.
Но теперь представьте, что у вас этих функций — сотни. И изменений в них нужно делать десятки в день.
И каждое изменение, как правило, заставляет функции вести себя более сложным образом и выдавать более сложный результат. И каждое изменение в одном месте ломает три других места.
В итоге у вас будут нарождаться десятки клонированных функций, в которых вы сначала будете разбираться, а потом уже нет.
Это называется спагетти-код, и для борьбы с ним как раз придумали объектно-ориентированное программирование.
Объектно-ориентированное программирование
Основная задача ООП — сделать сложный код проще. Для этого программу разбивают на независимые блоки, которые мы называем объектами.
Объект — это не какая-то космическая сущность. Это всего лишь набор данных и функций — таких же, как в традиционном функциональном программировании. Можно представить, что просто взяли кусок программы и положили его в коробку и закрыли крышку. Вот эта коробка с крышками — это объект.
Программисты договорились, что данные внутри объекта будут называться свойствами, а функции — методами. Но это просто слова, по сути это те же переменные и функции.
Объект можно представить как независимый электроприбор у вас на кухне. Чайник кипятит воду, плита греет, блендер взбивает, мясорубка делает фарш.
Внутри каждого устройства куча всего: моторы, контроллеры, кнопки, пружины, предохранители — но вы о них не думаете. Вы нажимаете кнопки на панели каждого прибора, и он делает то, что от него ожидается.
И благодаря совместной работе этих приборов у вас получается ужин.
Объекты характеризуются четырьмя словами: инкапсуляция, абстракция, наследование и полиморфизм.
Инкапсуляция — объект независим: каждый объект устроен так, что нужные для него данные живут внутри этого объекта, а не где-то снаружи в программе.
Например, если у меня есть объект «Пользователь», то у меня в нём будут все данные о пользователе: и имя, и адрес, и всё остальное.
И в нём же будут методы «Проверить адрес» или «Подписать на рассылку».
Абстракция — у объекта есть «интерфейс»: у объекта есть методы и свойства, к которым мы можем обратиться извне этого объекта. Так же, как мы можем нажать кнопку на блендере. У блендера есть много всего внутри, что заставляет его работать, но на главной панели есть только кнопка. Вот эта кнопка и есть абстрактный интерфейс.
В программе мы можем сказать: «Удалить пользователя». На языке ООП это будет «пользователь.удалить()» — то есть мы обращаемся к объекту «пользователь» и вызываем метод «удалить». Кайф в том, что нам не так важно, как именно будет происходить удаление: ООП позволяет нам не думать об этом в момент обращения.
Например, над магазином работают два программиста: один пишет модуль заказа, а второй — модуль доставки. У первого в объекте «заказ» есть метод «отменить».
И вот второму нужно из-за доставки отменить заказ. И он спокойно пишет: «заказ.отменить()».
Ему неважно, как другой программист будет реализовывать отмену: какие он отправит письма, что запишет в базу данных, какие выведет предупреждения.
Наследование — способность к копированию. ООП позволяет создавать много объектов по образу и подобию другого объекта. Это позволяет не копипастить код по двести раз, а один раз нормально написать и потом много раз использовать.
Например, у вас может быть некий идеальный объект «Пользователь»: в нём вы прописываете всё, что может происходить с пользователем. У вас могут быть свойства: имя, возраст, адрес, номер карты. И могут быть методы «Дать скидку», «Проверить заказ», «Найти заказы», «Позвонить».
На основе этого идеального пользователя вы можете создать реального «Покупателя Ивана». У него при создании будут все свойства и методы, которые вы задали у идеального покупателя, плюс могут быть какие-то свои, если захотите.
Идеальные объекты программисты называют классами.
Полиморфизм — единый язык общения. В ООП важно, чтобы все объекты общались друг с другом на понятном им языке. И если у разных объектов есть метод «Удалить», то он должен делать именно это и писаться везде одинаково. Нельзя, чтобы у одного объекта это было «Удалить», а у другого «Стереть».
При этом внутри объекта методы могут быть реализованы по-разному. Например, удалить товар — это выдать предупреждение, а потом пометить товар в базе данных как удалённый.
А удалить пользователя — это отменить его покупки, отписать от рассылки и заархивировать историю его покупок. События разные, но для программиста это неважно.
У него просто есть метод «Удалить()», и он ему доверяет.
Создать карусель Добавьте описание
Такой подход позволяет программировать каждый модуль независимо от остальных. Главное — заранее продумать, как модули будут общаться друг с другом и по каким правилам.
При таком подходе вы можете улучшить работу одного модуля, не затрагивая остальные — для всей программы неважно, что внутри каждого блока, если правила работы с ним остались прежними.
Плюсы и минусы ООП
У объектно-ориентированного программирования много плюсов, и именно поэтому этот подход использует большинство современных программистов.
- Визуально код становится проще, и его легче читать. Когда всё разбито на объекты и у них есть понятный набор правил, можно сразу понять, за что отвечает каждый объект и из чего он состоит.
- Меньше одинакового кода. Если в обычном программировании одна функция считает повторяющиеся символы в одномерном массиве, а другая — в двумерном, то у них большая часть кода будет одинаковой. В ООП это решается наследованием.
- Сложные программы пишутся проще. Каждую большую программу можно разложить на несколько блоков, сделать им минимальное наполнение, а потом раз за разом подробно наполнить каждый блок.
- Увеличивается скорость написания. На старте можно быстро создать нужные компоненты внутри программы, чтобы получить минимально работающий прототип.
А теперь про минусы:
- Сложно понять и начать работать. Подход ООП намного сложнее обычного функционального программирования — нужно знать много теории, прежде чем будет написана хоть одна строчка кода.
- Требует больше памяти. Объекты в ООП состоят из данных, интерфейсов, методов и много другого, а это занимает намного больше памяти, чем простая переменная.
- Иногда производительность кода будет ниже. Из-за особенностей подхода часть вещей может быть реализована сложнее, чем могла бы быть. Поэтому бывает такое, что ООП-программа работает медленнее, чем функциональная (хотя с современными мощностями процессоров это мало кого волнует).
Что дальше
Впереди нас ждёт разговор о классах, объектах и всём остальном важном в ООП. Крепитесь, будет интересно!
Подписывайтесь на наш канал, чтобы стать настоящим профи!
Источник: https://zen.yandex.ru/media/id/5c7ce8b92248a400aff22085/5d931239c31e4900b16af5c0
Видеокурс: основы объектно-ориентированного программирования
Подборка видео по теме объектно-ориентированного программирования. Годится для новичков, изучающих ООП, и для подготовки к собеседованию.
1. Введение в обучающий видеокурс по основам объектно-ориентированного программирования (ООП)
В этом вступительном ролике задается вектор всего курса. Здесь описывается план занятий, а автор делает акцент на том, что видео выстроены в логической последовательности. Рекомендуется смотреть ролики строго друг за другом, не перескакивая на другие темы, чтобы не запутаться.
2. Основные принципы объектно-ориентированного программирования. Что такое ООП и зачем оно нужно?
Поговорим о том, чем объектно-ориентированные программы отличаются от процедурных; из чего такая программа состоит, и каким образом над одной программой может работать множество программистов; вкратце пройдемся по главным парадигмам ООП: инкапсуляции, абстракции, полиморфизму, наследованию.
3. Понятие класса и объекта в ООП
В этом видео будет затронута самая важная тема курса – классы и объекты. По словам автора курса, полное понимание этих тем обеспечивает понимание объектно-ориентированного программирование на 70 процентов. Подробно рассмотрим процесс проектирования и воспроизводства классов и их объектов.
4. Полезные советы при создании класса в ООП
Развиваем тему классов в объектно-ориентированном программировании. Рассмотрим, каким должен быть хороший класс, а главное, как выглядит класс, который создан не понимающим принципы ООП программистом. Почему класс должен быть максимально простым и как к этому прийти.
5. Методы и данные в ООП
Что находится внутри класса, из чего он состоит? Что такое данные и методы, и без чего можно обойтись в описании класса? Как описывать метод, передавать параметры? Чем отличается метод класса в ООП от функции в процедурном программировании? В данном видео есть ответы на все перечисленные вопросы.
6. Методы в ООП. Типы методов
Продолжаем изучать тему методов в объектно-ориентированном программировании. Какие виды методов существует и зачем они нужны? Чем методы экземпляров отличаются от методов класса? Конструктор, деструктор, getter, setter – что это такое и зачем эти методы нужны?
7. Каким должен быть хороший метод в ООП
Теперь, зная основы создания методов в ООП, можно заняться вопросом создания хорошего метода. Здесь все так же, как с классом: если вы поняли суть методов и их роль в объектно-ориентированном программировании, вы почти наверняка будете описывать методы правильно. Но что бывает, если метод выглядит не так, как нужно, и что с этим делать – выясняем в этом видео.
8. Наследование в ООП
Поговорим об одном из самых мощных инструментов ООП – наследовании, и о том, как использовать этот механизм с умом. На примере рассмотрим процесс построения родительского класса и создание дочерних классов на его основе.
9. Инкапсуляция данных в ООП
Что означает слово «инкапсулирование», и как это относится к методам класса? Как защитить методы от внешнего воздействия, когда и зачем это может понадобиться? На примере рассмотрим методы, которые стоит инкапсулировать.
10. Абстракция в ООП
В отличие от других видео о парадигмах ООП, в этой теме не будет красочных примеров. Только теория, но она крайне важна для освоения и понимания, так как абстракция тесно связана с механизмом наследования. В этом видео разберемся не только с новой парадигмой, но и попробуем глубже понять основы ООП.
11. Полиморфизм в ООП
Что нужно знать, прежде чем понять эту парадигму? Что означает «полиморфизм»? Развиваем идею абстрагирования классов и методов, а также рассмотрим пример применения полиморфизма.
Источник: https://proglib.io/p/oop-videocourse/
Объектно-ориентированное программирование. Прикладное программирование на языке С++ в среде OS Windows
АННОТАЦИЯ
к программе повышения квалификации
Цель программы: качественное изменение профессиональных компетенций, направленных на повышение профессионального уровня в рамках имеющейся у слушателей квалификации в области разработки, отладки проверки работоспособности, модификации программного обеспечения.
У слушателей курса формируются:
- специфическое мышление в степени, необходимой для быстрого и полного освоения технологий программирования под Windows;
- способность видеть и формулировать новые прикладные задачи, соответствующие профессиональной деятельности слушателей;
- профессиональные компетенции в области разработки прикладных программ с учетом специфики программирования в среде OS Windows;
- способность оценивать качество функционирования разработанной программы;
- способности практической разработки прикладных объектно-ориентированных программ различного назначения и способами их оптимизации.
Основное внимание уделяется изучению принципов объектно-ориентированного подхода при декомпозиции поставленной задачи и способов повышения эффективности разрабатываемых программ с учетом применения библиотеки MFC.
Результатом обучения является приобретение знаний и умений по:
- основным этапам разработки и функционированию программ, созданных на языке высокого уровня;
- основным принципам разработки программного обеспечения;
- основным характеристикам типов данных;
- базовым алгоритмам обработки данных;
- важнейшим компонентам среды программирования;
- среде разработки программного обеспечения;
- методики использования программных средств для решения практических задач;
- осуществлению процессов разработки алгоритма;
- функционально-алгоритмической структуре разрабатываемого программного продукта;
- разработке компонентов программных комплексов;
- осуществлению анализа функционирования проекта;
- применению информационных технологий на рабочем месте;
- получению при изучении программирования;
- культуре мышления, способности к обобщению, анализу, восприятию информации;
- выстраиванию логической последовательности выполнения программы;
- структуре информации для определения типов данных.
Категория слушателей: работники профильных отраслей промышленности, высшего образования, научно-исследовательских и конструкторских организаций.
Объем программы: 40 часов.
Форма обучения: очно-заочная.
ПОСМОТРЕТЬ УЧЕБНЫЙ ПЛАН ПРОГРАММЫ ПОВЫШЕНИЯ КВАЛИФИКАЦИИ
Источник: https://mai.ru/education/fpk/oop_windows/
Обучение студентов основам объектно-ориентированного программирования
Мунаев С. С. Обучение студентов основам объектно-ориентированного программирования // Молодой ученый. — 2016. — №7. — С. 674-674. — URL https://moluch.ru/archive/111/27691/ (дата обращения: 20.03.2020).
The article is describes the basics of learning objectively oriented to program. Considered the basic concepts objectively oriented to program: abstraction, encapsulation, modularity, hierarchy. The analysis of structural and objectively oriented differences in the method programming.
Keyword: objectively oriented to program, abstraction, encapsulation, modularity, hierarchy.
Усложнение и увеличение программного обеспечения используемого в системе образования, всеобщее внедрение в школы систем дистанционных технологий и электронного обучения требуют изменения и развития системы подготовки будущего учителя информатики. Система подготовки будущего учителя информатики в современных условиях должна быть реализована с учетом постоянного развития аппаратного и программного обеспечения компьютера, а также средств связи [2, 5].
На сегодняшний день в системе подготовки будущего учителя одну из ключевых ролей принадлежит программированию. Это связано с тем, что одной из самых важных линий изучения информатики в школе является линия алгоритмизация и программирование.
Так, соответствии со спецификацией единого государственного экзамена по информатике 2016 года три раздела — «Логика и алгоритмы», «Элементы теории алгоритмов» и «Программирование» занимают по объему 65 % от общего количества заданий.
Таким образом, несмотря на то, что мы давно отказались от лозунга «Программирование — вторая грамотность» и выяснили для себя, что программирование — это не вторая грамотность, а достаточно специфический, творческий вид деятельности требующий высоких умственный качеств и усилий, программирование остается одним из ведущих линий изучения информатики в школе, а значит и в системе подготовки будущих учителей информатики.
Программирование — теоретическая и практическая деятельность по обеспечению программного управления обработкой данных, включающая в себя создание программ, а также выбор структур и кодирование данных [6].
Программирование изначально развивалась как прикладная отрасль деятельности человека. Программы писали для решения конкретной задачи или класса задач.
Программирование как теоретическая и научная отрасль деятельности человека стала развиваться начиная с 60-х годов 20 столетия.
Теоретические и научные исследования затронули как алгоритмы и алгоритмические структуры, методы оптимизации алгоритмов и ресурсов компьютера, так и языки программирования.
В начале 80-х годов вместе с внедрением информатики и программирования в систему образования, в частности с введением школьного курса «Основы информатики и вычислительной техники», появились первые работы, посвященные методике обучения информатики и в частности программированию.
В это же время существенно увеличились возможности компьютеров, возросла их эффективность в решении задач самого широкого профиля, стали появляться программы повышенной сложности, начали развиваться языки программирования высокого уровня. Наибольшую популярность получило структурное программирование, в котором программа составлялась из независимых модулей, объединенных в единое дерево.
В структурном программировании используется дерево алгоритмов для разбиения сложной задачи на простые подзадачи, в котором каждая ветка используется для получения решения очередного этапа решения основной задачи. К сегодняшнему дню разработано более двух тысяч языков программирования.
Все эти языки создавались для решения конкретных задач из определенных предметных областей. При этом каждый язык программирования, как правило, создавался для решения более сложных задач, которые было трудно решить с использованием уже имеющихся.
В последние годы наиболее бурное развитие проживают объектно-ориентированные языки программирования.
Объектно-ориентированное программирование — это метод программирования, который основан разработке программы в виде множества объектов. При этом каждый из этих объектов является экземпляром определенного класса объектов. Классы объектов образуют иерархию классов объектов.
Объектно-ориентированная парадигма программирования характеризуется четырьмя главными свойствами, присущими этой парадигме: абстрагирование, инкапсуляция, модульность, иерархия.
Абстрагирование позволяет моделировать объект, выделив значимые свойства объекта, отличающие его от всех других видов объектов и, таким образом, определяет его границы. Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяет отделить наиболее значимые характеристики объекта от его незначимых свойств.
Инкапсуляция — это процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение. Абстракция и инкапсуляция взаимно дополняют друг друга: абстрагирование отвечает за внешнюю составляющую объекта, а инкапсуляция за внутреннюю.
Модульность — это свойство, которое подразумевает разделение программы на независимые составные части — модули.
Иерархия — это упорядочение абстракций, расположение их по уровням.
Главными понятиями объектно-ориентированного программирования являются объекты и классы объектов. Объект представляет собой идентифицируемый предмет или явление, имеющий определенное назначение.
Между объектами устанавливается связи [3].
Если говорить о взаимоотношениях понятий объект и класс объектов, то класс объектов — это множество объектов объединенных общими свойствами, а объект — соответственно, один из экземпляров класса объектов.
Объектно-ориентированный подход отличается от тех подходов, которые связаны с более традиционными методами структурного программирования. Объектно-ориентированная парадигма программирования является более открытой и масштабируемой.
Это не означает, что объектный подход требует отказаться от применения всех ранее найденных и испытанных методов и приемов. Напротив, новые элементы всегда основываются на предшествующем опыте.
Объектный подход создает множество существенных удобств, которые при других условиях не могут быть обеспечены.
Этот подход позволяет научить учащихся разрабатывать программы, которые воплощают пять атрибутов хорошо структурированных сложных систем.
Применение объектного подхода приводит к построению систем на основе стабильных промежуточных описаний, что упрощает процесс внесения изменений.
Наконец, объектный подход ориентирован на человеческое восприятие мира, и многие обучаемые и специалисты, не имеющие понятия о том, как работает компьютер, находят вполне естественным объектно-ориентированный подход к программированию.
Практически все наиболее популярные современные языки программирования основаны на объектно-ориентированном подходе. Широкое распространение получили системы визуального программирования, основанные на основе объектно-ориентированной технологии.
Возможности, предоставляемые программистам в современной среде разработки растут с каждым годом, с каждым выходом новых версий. Возрастает и сложность задач, которые решаются, а значит и сложность алгоритмов и программ.
Использование объектно-ориентированной парадигмой программирования способствует повышению эффективности решаемых задач и является одной из перспективных направлений развития сред программирования.
Однако, можно констатировать, что несмотря на все преимущества объектно-ориентированная парадигма программирования не находит должного отражения в системе подготовки будущего учителя информатики.
Объектно-ориентированное программирование нельзя рассматривать как абсолютно новый подход, не имеющий ничего общего со структурным программированием. Так А. Пантелеймонов [4] называет объектно-ориентированный подход новой философией программирования.
Эта философия, по его мнению, является следующим шагом в развитии структурного подхода к программированию. Эта философия соответствует мышлению человека в большей степени чем философия структурного программирования, то есть предоставляет более дружественный интерфейс для программирования.
Поэтому обучение объектно-ориентированному программированию является актуальным и важным направлением подготовки будущего учителя информатики.
Литература:
- Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на C++. — М.: Бином, 1999.
- Кузнецов А. А., Сурхаев М. А. Совершенствование методической системы подготовки учителя информатики в условиях формирования новой образовательной среды. Учебное пособие. –М., 2012.
- Магомедов Р. М. Формирование системно-логического мышления будущего учителя информатики при изучении объектно-ориентированного программирования. Дисс…к.п.н. –М., 2002 г.
- Пантелеймонов А. Программируем для Widows. // Мир ПК. — 1995. — № 6. — С. 9.
- Сурхаев М. А. Подготовка будущих учителей информатики для работы в условиях информационно-коммуникационной образовательной среды. –М., 2009.
- Телло Э. Р. Объектно-ориентированное программирование в среде Windows: Пер. с англ. М.: Наука-Уайли, 1993.
Основные термины (генерируются автоматически): будущего учителя информатики, подготовки будущего учителя, языки программирования, парадигма программирования, objectively oriented, будущих учителей информатики, линий изучения информатики, структурного программирования, системе подготовки будущего, подготовки учителя информатики, языки программирования высокого, отрасль деятельности человека, объектный подход, методами структурного программирования, философия структурного программирования, современные языки программирования, языков программирования, новой философией программирования, язык программирования, класса объектов.
Источник: https://moluch.ru/archive/111/27691/
Объектно-ориентированное программирование. Практика
Последнее обновление: 08.10.2019
В предыдущих главах были рассмотрены основные концепции объектно-ориентированного программирования. В этой главе создадим приложение, в котором на практическом примере применим большую часть этих концепций.
Вначале создадим новый проект консольного приложения .NET Core, который назовем BankApplication:
И после этого создается стандартный пустой проект с классом Program и методом Main. Это будет главный проект приложения.
Но для хранения классов и интерфейсов нередко создаются отдельные проекты, в рамках которых все классы компилируются в файл библиотеки dll, которая затем подключается к главному проекту. Поэтому добавим в решение новый проект. Для этого нажмем правой кнопкой мыши на решение и выберем в контекстном меню Add -> New Project…:
В качестве типа нового проекта выберем шаблон Class Library (.NET Core) и назовем новый проект BankLibrary:
После этого в решение добавляется новый проект, который по умолчанию имеет один файл Class1.cs. Он нам не нужен, поэтому удалим этот файл.
Этот проект будет содержать все классы, которые будут использоваться главным проектом.
Наше приложение будет имитировать работу банка. И прежде чем начать работу над приложением, выделим сущности, которые будем использовать, а также отношения между сущностями. Ну в частности, здесь мы можем выделить такие сущности, как сам банк, банковский счет. Счета бывают различных видов, например, счета до востребования и депозиты, соответственно будет несколько сущностей счетов.
Первым делом добавим в проект BankLibrary новый интерфейс, который будет описывать функциональность банковского счета. При проектировании интерфейса следует помнить, что если он определяет функционал без реализации, то данный функционал обязательно должен быть реализован в классах, применяющих данный интерфейс.
Итак, добавим в проект BankLibrary интерфейс IAccount, который будет иметь следующее содержание:
public interface IAccount
{
// Положить деньги на счет
void Put(decimal sum);
// Взять со счета
decimal Withdraw(decimal sum);
}
Данный интерфейс определяем два метода для того, чтобы положить на счет или вывести средства со счета.
Для реакции на изменения состояния счеты мы будем использовать событийную модель, то есть обрабатываться различные изменения счета через события. Для этого добавим в проект BankLibrary новый файл AccountStateHandler.cs, в котором определим делегат и вспомогательный класс:
namespace BankLibrary
{
public delegate void AccountStateHandler(object sender, AccountEventArgs e);
public class AccountEventArgs
{
// Сообщение
public string Message { get; private set;}
// Сумма, на которую изменился счет
public decimal Sum { get; private set;}
public AccountEventArgs(string _mes, decimal _sum)
{
Message = _mes;
Sum = _sum;
}
}
}
Делегат AccountStateHandler будет использоваться для создания событий. А для обработки событий также определен класс AccountEventArgs, который определяет два свойства для чтения: сообщение о событии и сумма, на которую изменился счет.
Теперь определим основной класс приложения Account.
Источник: https://metanit.com/sharp/tutorial/3.29.php