Ооп разделы: Приказ Минобрнауки России от 17.12.2010 N 1897 (ред. от 11.12.2020) “Об утверждении федерального государственного образовательного стандарта основного общего образования” (Зарегистрировано в Минюсте России 01.02.2011 N 19644)

Содержание

Примерная основная образовательная программа основного общего образования

Реестр примерных программ является государственной информационной системой, которая ведётся на электронных носителях и функционирует в соответствии с едиными организационными, методологическими и программно-техническими принципами, обеспечивающими её совместимость и взаимодействие с иными государственными информационными системами и информационно-телекоммуникационными сетями. (Часть 10 статьи 12 Федерального закона от 29 декабря 2012 г. № 273-ФЗ «Об образовании в Российской Федерации» (Собрание законодательства Российской Федерации, 2012, № 53, ст. 7598; 2013, № 19, ст. 2326).

Согласно Части 10 статьи 12 Федерального закона от 29 декабря 2012 г. № 273-ФЗ «Об образовании в Российской Федерации» Примерные основные образовательные программы включаются в реестр примерных основных образовательных программ.

На данный момент в реестре размещена Примерная основная образовательная программа основного общего образования. Скачать полный текст:  [PDF], [Word].

 

ПРИМЕРНАЯ

ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ОСНОВНОГО ОБЩЕГО ОБРАЗОВАНИЯ

ОДОБРЕНА

решением федерального учебно-методического объединения по общему образованию (протокол от 08 апреля 2015 г. № 1/15)1 

_______________

[1] В редакции протокола № 3/15 от 28.10.2015 федерального учебно-методического объединения по общему образованию.

Содержание 

1. Целевой раздел примерной основной образовательной программы основного общего образования… 5 

1.1. Пояснительная  записка… 5 

1.1.1. Цели и задачи реализации основной образовательной программы основного общего образования… 5 

1.1.2.Принципы и подходы к формированию образовательной программы основного общего образования… 7 

1.2. Планируемые результаты освоения обучающимися основной образовательной программы основного общего образования… 10 

1.2.1. Общие положения… 10 

1.2.2. Структура планируемых результатов… 11 

1.2.3. Личностные результаты освоения ООП 

1.2.4. Метапредметные результаты освоения ООП.. 17 

1.2.5. Предметные результаты 

1.2.5.1. Русский язык. 28 

1.2.5.2. Литература. 31 

1.2.5.3. Иностранный язык (на примере английского языка).39 

1.2.5.4. Второй иностранный язык (на примере английского языка).48 

1.2.5.5. История России. Всеобщая история. 58 

1.2.5.6. Обществознание. 62 

1.2.5.7. География. 72 

1.2.5.8. Математика. 78 

1.2.5.9. Информатика. 115 

1.2.5.10. Физика. 121 

1.2.5.11. Биология. 131 

1.2.5.12. Химия. 139 

1.2.5.13. Изобразительное искусство. 143 

1.2.5.14. Музыка. 157 

1.2.5.15. Технология. 162 

1.2.5.16. Физическая культура. 175 

1.2.5.17. Основы безопасности жизнедеятельности. 178 

1.3. Система оценки достижения планируемых результатов освоения основной образовательной программы основного общего образования. 185 

2.Содержательный раздел примерной основной образовательной программы основного общего образования. 199 

2.1. Программа развития универсальных учебных действий, включающая формирование компетенций обучающихся в области использования информационно-коммуникационных технологий, учебно-исследовательской и проектной деятельности. 199 

2.2. Примерные программы учебных предметов, курсов. 227 

2.2.1 Общие положения. 227 

2.2.2. Основное содержание учебных предметов на уровне основного общего образования. 228 

2.2.2.1. Русский язык. 228 

2.2.2.2. Литература. 236 

2.2.2.3. Иностранный язык. 258 

2.2.2.4. Второй иностранный язык (на примере английского языка)267 

2.2.2.5. История России. Всеобщая история. 275 

2.2.2.6. Обществознание. 316 

2.2.2.7. География. 321 

2.2.2.8. Математика. 343 

2.2.2.9. Информатика. 371 

2.2.2.10. Физика. 382 

2.2.2.11. Биология. 391 

2.2.2.12. Химия. 405 

2.2.2.13. Изобразительное искусство. 410 

2.2.2.14. Музыка. 416 

2.2.2.15. Технология. 428 

2.2.2.16. Физическая культура. 440 

2.2.2.17. Основы безопасности жизнедеятельности. 443 

2.3. Программа воспитания и социализации обучающихся. 450 

2.4. Программа коррекционной работы.. 492 

3. Организационный раздел примерной основной образовательной программы основного общего образования. 506

3.1. Примерный учебный план основного общего образования. 506 

3.1.1. Примерный календарный учебный график. 516 

3.1.2. Примерный план внеурочной деятельности. 517 

3.2.Система условий реализации основной образовательной программы. 521 

3.2.1. Описание кадровых условий реализации основной образовательной программы основного общего образования. 521

3.2.2. Психолого-педагогические условия реализации основной образовательной программы основного общего образования. 527 

3.2.3. Финансово-экономические условия реализации образовательной  программы основного общего образования. 529 

3.2.4. Материально-технические условия реализации основной образовательной программы.. 541 

3.2.5. Информационно-методические условия реализации основной образовательной программы основного общего образования  544 

3.2.6. Механизмы достижения целевых ориентиров в системе условий. 551 

3.2.7. Сетевой график (дорожная карта) по формированию  необходимой системы условий

Скачать полный текст:  [
553

 Скачать полный текст документа:  [PDF], [Word].

 

Спасский район

Глава местного самоуправления Спасского муниципального района

Бирюкова Татьяна Валентиновна

Председатель Земского собрания Спасского муниципального района

Хашкин Фёдор Борисович

 

Дорогие друзья!

Мы искренне рады приветствовать Вас на страницах официального сайта администрации Спасского муниципального района. Спасский район – сельскохозяйственный район, расположенный на юго-востоке лесостепного Правобережья Нижегородской области. Площадь района – 707 кв. км, или 70,7 тыс. га. Из них 54.4 тыс. га (77%) занято сельскохозяйственными угодьями (пашней, сенокосами, пастбищами), небольшими островками между которыми разбросаны леса (всего 6,7 тыс. га, или 9,5% площади района).

Административный центр Спасского района – село Спасское – является одним из старинных населенных пунктов Нижегородской области (основано в 1399 году) с типичными для районной «столицы» организациями, учреждениями и предприятиями обрабатывающей промышленности. Но есть у этого села и особые приметы. Даже его географическое положение примечательно: улицы разбросаны на семи холмах, точь-в-точь как в Москве или Древнем Риме.

Надеемся, что первое знакомство с нашим сайтом вызовет Ваш искренний интерес к Спасскому району, положит начало плодотворному и взаимовыгодному сотрудничеству. В настоящее время главная цель районной власти – обеспечить дальнейшее развитие Спасского района, поднять благосостояние его жителей. О том, как это будет достигаться в повседневной работе администрации района можно узнать, посетив страницы нашего официального сайта.

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

 

Администрация Спасского муниципального района Нижегородской области доводит до сведения граждан и организаций информацию о переходе на работу в системе электронного документооборота с использованием электронной подписи должностных лиц. При этом обращаем внимание, что бумажная копия документа, подписанного электронной подписью, идентична электронному документу и оформляется на бланке с изображением герба Нижегородской области с проставлением отметки об электронной подписи должностного лица в соответствии с требованиями ГОСТ Р 7.0.97−2016 «Организационно-распорядительная документация. Требования к оформлению документов».

Дата публикации 01.08.2019 г.

 

Образовательные программы

Краткое описание основной образовательной программы среднего общего образования муниципального автономного общеобразовательного учреждения «Средняя общеобразовательная школа №4 с углубленным изучением английского языка» состоит:

 

1. Целевой раздел, который включает

– результаты освоения учебной деятельности;

Систему оценки достижения планируемых результатов освоения образовательной программы среднего общего образования.

 

2. Содержательный раздел, который включает:

– программу развития УУД;

– цели и задачи, включающие учебно-исследовательскую деятельность и проектную деятельность;

– описание понятий, функций, состава и характеристик УУД и их связи с содержанием отдельных учебных предметов и внеурочной деятельностью, а также места УУД с структуре образовательной деятельности;

– типовые задания по формированию УУД;

– описание особенностей учебно-исследовательской и проектной деятельности;

– основные направления учебно-исследовательской и проектной деятельности;

– результаты учебно-исследовательской и проектной деятельности в рамках урочной и внеурочной деятельности.;

– описание условий, обеспечивающих развитие УУД;

– методика и инструментарий оценки;

– программы отдельных предметов;

-программа воспитания и социализации;

– основные направления духовно-нравственного развития, воспитания и социализации обучающихся;

– содержание, виды деятельности и формы занятий с обучающимися по каждому из направлений духовно-нравственного развития, воспитания и социализации обучающихся;

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

– критерии и показатели эффективности деятельности МАОУ СОШ №4 по обеспечению воспитания и социализации обучающихся, программу коррекционной работы;

– система комплексного психолого-медико-социального сопровождения и поддержки обучающихся;

– механизм взаимодействия, предусматривающий общую целевую и стратегическую направленность работы учителей, специалистов в области коррекционной и специальной педагогики, специальной психологии, медицинских работников;

– результаты работы с обучающимися с ОВЗ и особыми образовательными потребностями.

 

3. Организационный раздел:

– учебный план;

– план внеурочной деятельности;

– система условий реализации ООП;

– требования к кадровым условиям ООП СОО;

– психолого-педагогические условия реализации ООП;

– финансовое обеспечение реализации ООП СОО;

– материально-технические условия реализации ООП;

– информационно-методические условия реализации ООП;

– обоснование необходимых изменений в имеющихся условиях в соответствии с ООП СОО;

– механизмы достижения целевых ориентиров в системе условий;

– разработка сетевого графика (дорожная карта) по формированию необходимой системы условий;

– разработка контроля состояния системы условий;

– приложения.

 

Образовательные стандарты ФГОС НОО , ООО, СОО

Образовательные стандарты ФГОС НОО , ООО, СОО

 С 1 сентября 2011 года школа реализует Федеральный государственный образовательный стандарт НОО (ФГОС НОО).

 ПРИМЕРНАЯ ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА НАЧАЛЬНОГО ОБЩЕГО ОБРАЗОВАНИЯ (Одобрена решениемрешением федерального учебно-методического объединения по общему образованию(протокол от 8 апреля 2015 г. № 1/15)- https://fgosreestr.ru/registry/primernaya-osnovnaya-obrazovatelnaya-programma-nachalnogo-obshhego-obrazovaniya-2/).

 С 1 сентября 2015 года школа реализует Федеральный государственный образовательный стандарт ООО (ФГОС ООО).

 ПРИМЕРНАЯОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ОСНОВНОГО ОБЩЕГО ОБРАЗОВАНИЯ (Одобрена решением от 08.04.2015, протокол №1/15 (в редакции протокола № 1/20 от 04.02.2020)-(https://fgosreestr.ru/registry/пооп_ооо_06-02-2020/).

 C 1 сентября 2020 года школа реализует Федеральный государственный образовательный стандарт СОО (ФГОС СОО).

ПРИМЕРНАЯ ОСНОВНАЯ ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА СРЕДНЕГО ОБЩЕГО ОБРАЗОВАНИЯ (Одобрена решением федерального учебно-методического объединения по общему образованию(протокол от 28 июня 2016 г. № 2/16-з)- (https://fgosreestr.ru/registry/primernaya-osnovnaya-obrazovatelnaya-programma-srednego-obshhego-obrazovaniya/).

РАБОЧАЯ ПРОГРАММА ВОСПИТАНИЯ МБОУ “Средняя общеобразовательная школа №4 г. Льгова”

 

 Федеральный государственный образовательный стандарт начального общего образования.

Федеральный государственный образовательный стандарт основного общего образования.

Федеральный государственный образовательный стандарт среднего общего образования.

Основная образовательная программа начального общего образования.

1. Целевой раздел 

2. Содержательный раздел 

3. Организацтонный раздел

 КАЛЕНДАРНЫЙ ПЛАН ВОСПИТАТЕЛЬНОЙ РАБОТЫ ШКОЛЫ НА УРОВНЕ НАЧАЛЬНОГО ОБЩЕГО ОБРАЗОВАНИЯ (Приложение к ООП НОО).

Основная образовательная программа основного общего образования 

1. Целевой раздел

2. Содержательный раздел

3. Организационый раздел

Календарный план воспитательной работы школы на уровне основного общего образования (Приложение к ООП ООО)

 Основная образовательная программа среднего общего образования 

1. Целевой раздел 

2.Содержательный раздел 

3. Организационный раздел 

Календарный учебный график образовательного процесса на 2021-2022 учебный год.

Учебный план начального общего образования на 2021-2022 учебный год . ФГОС НОО.

Учебный план основного  общего образования на 2021-2022 учебный год . ФГОС ООО.

Учебный план среднего  общего образования на 2021-2022 учебный год . ФГОС СОО.

Формы промежуточной аттестации начального общего образования на 2021-2022 уч. год.

Формы промежуточной аттестации основного общего образования на 2021-2022 уч. год.  

Формы промежуточной аттестации среднего общего образования на 2021-2022 уч. год. 

 

Планы внеурочной деятельности. 1-4 классы. 2021-2022 учебный год.

 

Планы внеурочной деятельности. 5-9  класс. 2021-2022 учебный год.  

План внеурочной деятельности. 10-11 класс. 2021-2022 учебный год.

В разделе рабочей программы педагога планируемые результаты нужно прописывать на ступень или на каждый год?

В соответствии с п. 6 ч. 3 ст. 28 ФЗ «Об Образовании» образовательная организация самостоятельно разрабатывает и утверждает образовательные программы образовательной организации. Одним из разделов рабочей программы является планируемые результаты. 

Планируемые результаты освоения основной образовательной программы основного общего образования (ООП ООО) представляют собой систему ведущих целевых установок и ожидаемых результатов освоения всех компонентов, составляющих содержательную основу образовательной программы. Они обеспечивают связь между требованиями ФГОС ООО, образовательным процессом и системой оценки результатов освоения ООП ООО, выступая содержательной и критериальной основой для разработки программ учебных предметов, курсов, учебно-методической литературы, программ воспитания и социализации, с одной стороны, и системы оценки результатов – с другой.

В соответствии с требованиями ФГОС ООО система планируемых результатов – личностных, метапредметных и предметных – устанавливает и описывает классы учебно-познавательных и учебно-практических задач, которые осваивают учащиеся в ходе обучения, особо выделяя среди них те, которые выносятся на итоговую оценку, в том числе государственную итоговую аттестацию выпускников. (согласно «Примерной основной образовательной программе основного общего образования», одобренной решением федерального учебно-методического объединения по общему образованию, протокол от 08.04.2015 N 1/15).

Данный ответ подготовлен при участии студентки 4 курса факультета права НИУ ВШЭ А. Безруковой.

Кроме того, в соответствии с приказом Минобрнауки России от 17.12.2010 N 1897 «Об утверждении федерального государственного образовательного стандарта основного общего образования» установлено, что «достижение обучающимися планируемых результатов освоения основной образовательной программы основного общего образования определяется по завершении обучения». (гл.2)

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

Основные образовательные программы

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

07.03.01 Архитектура, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (ооп)

07.04.01 Архитектура, магистратура
Профиль подготовки: Архитектура и урбанизм
Форма обучения: очная

21.03.03 Геодезия и дистанционное зондирование, бакалавриат
Профиль подготовки: Аэрокосмические съемки и фотограмметрия
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-gidz-aks-bak)
Загрузить копию основной образовательной программы (ОПОП_21_03_03 – ГиДЗ АКС)

21.04.03 Геодезия и дистанционное зондирование, магистратура
Профиль подготовки: Аэрокосмические съемки и фотограмметрия
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-gidz-aks-mag)
Загрузить копию основной образовательной программы (ОПОП_21_04_03 – ГиДЗ)

21.03.03 Геодезия и дистанционное зондирование, бакалавриат
Профиль подготовки: Геодезия
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (gf-gidz-geod-bak)
Загрузить копию основной образовательной программы (ОПОП_21_03_03 – ГиДЗ Г)

21.04.03 Геодезия и дистанционное зондирование, магистратура
Профиль подготовки: Геодезия
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (ОПОП_21_04_03 – ГиДЗ)
Загрузить копию основной образовательной программы (21.04.03 gidz)

21.03.03 Геодезия и дистанционное зондирование, бакалавриат
Профиль подготовки: Информационное обеспечение инфраструктуры пространственных данных
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-gidz-ipd-bak)

21.03.03 Геодезия и дистанционное зондирование, бакалавриат
Профиль подготовки: Исследование природных ресурсов методами дистанционного зондирования
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-gidz-ipr-bak)
Загрузить копию основной образовательной программы (ОПОП_21_03_03 – ГиДЗ ИПР)

21.04.03 Геодезия и дистанционное зондирование, магистратура
Профиль подготовки: Исследование природных ресурсов методами дистанционного зондирования
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-gidz-ipr-mag)
Загрузить копию основной образовательной программы (ОПОП_21_04_03 – ГиДЗ)

21.03.03 Геодезия и дистанционное зондирование, бакалавриат
Профиль подготовки: Космическая геодезия и навигация
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (gf-gidz-kgin-bak)
Загрузить копию основной образовательной программы (ОПОП_21_03_03 – ГиДЗ КГиН)

21.04.03 Геодезия и дистанционное зондирование, магистратура
Профиль подготовки: Космическая геодезия и навигация
Форма обучения: очная
Загрузить копию основной образовательной программы (ОПОП_21_04_03 – ГиДЗ)

07.03.04 Градостроительство, бакалавриат
Форма обучения: очная

21.03.02 Землеустройство и кадастры, бакалавриат
Профиль подготовки: Земельно-имущественные правоотношения
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (ООП Зик ЗИО)

21.04.02 Землеустройство и кадастры, магистратура
Профиль подготовки: Земельно-имущественные правоотношения
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (ООП маг Зик ЗИО1)

21.03.02 Землеустройство и кадастры, бакалавриат
Профиль подготовки: Кадастр недвижимости
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (feut-zik-bak)

21.03.02 Землеустройство и кадастры, бакалавриат
Профиль подготовки: Управление недвижимостью и развитием территорий
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (ООП упр. недв)

21.04.02 Землеустройство и кадастры, магистратура
Профиль подготовки: Управление недвижимостью и развитием территорий
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (feut-zik-mag)

10.03.01 Информационная безопасность, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (foist-ib-bak)

10.04.02 Информационная безопасность, магистратура
Форма обучения: очная

09.03.02 Информационные системы и технологии, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-isit-bak)

09.04.02 Информационные системы и технологии, магистратура
Профиль подготовки: Геоинформационные системы и технологии
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fpkif-isit-mag)

09.04.02 Информационные системы и технологии, магистратура
Профиль подготовки: Информационная безопасность информационно-коммуникационных систем
Форма обучения: очная
Загрузить описание основной образовательной программы

05.03.03 Картография и геоинформатика, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fkg-kig-bak)

05.04.03 Картография и геоинформатика, магистратура
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (fkg-kig-mag)

12.03.05 Лазерная техника и лазерные технологии, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (foist-ltilt-bak)

12.03.02 Оптотехника, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (foist-opt-bak)

12.04.02 Оптотехника, магистратура
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (ОПОП 12.04.02 Оптотехника размещение магистратура)

21.05.01 Прикладная геодезия, специалитет
Профиль подготовки: Инженерная геодезия
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (gf-pg-spec)
Загрузить копию основной образовательной программы (ОПОП_21_05_01 – ИГ)

21.05.01 Прикладная геодезия, специалитет
Профиль подготовки: Инженерно-геодезическое обеспечение строительства и эксплуатации объектов нефтегазового и энергетического комплекса
Форма обучения: очная
Загрузить копию основной образовательной программы (ОПОП_21_05_01 – ИГО НЭК)

09.03.03 Прикладная информатика, бакалавриат
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (gf-pi-bak)

27.03.03 Системный анализ и управление, бакалавриат
Профиль подготовки: Управление земельно-информационными системами
Форма обучения: очная

27.03.02 Управление качеством, бакалавриат
Профиль подготовки: Управление качеством в топографо-геодезическом производстве
Форма обучения: очная

12.05.01 Электронные и оптико-электронные приборы и системы специального назначения, специалитет
Профиль подготовки: Оптико-электронные приборы и системы специального назначения
Форма обучения: очная
Загрузить описание основной образовательной программы
Загрузить копию основной образовательной программы (foist-eioepissn-spec)

40.03.01 Юриспруденция, бакалавриат
Профиль подготовки: Земельно-имущественные отношения
Форма обучения: очная

40.04.01 Юриспруденция, магистратура
Профиль подготовки: Земельно-имущественные отношения
Форма обучения: очная


Образование

Образование

Реализуемые уровни образования
  • начальное общее образование
  • основное общее образование
  • среднее общее образование

Формы обучения

Формы получения образования

Формы обучения

Количество обучающихся

В МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (в школе)

очное обучение

2051

очно-заочное обучение

1

заочное обучение

0

Вне МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (вне школы)

семейное образование

 

0

самообразование

 

0

Нормативные сроки обучения
  • уровень начального общего образования (1-4 классы) – 4 года
  • уровень основного общего образования (5-9 классы)- 5 лет
  • уровень среднего общего образования (10-11 классы) – 2 года

Наименование образовательных программ
  • основная образовательная программа начального общего образования;
  • основная образовательная программа основного общего образования;
  • основная образовательная программа среднего общего образования;
  • дополнительная  общеобразовательная общеразвивающая программа.

Адаптированные образовательные программы в МБОУ «Средняя общеобразовательная школа №58» в 2021-2022 учебном году не реализуются.

Описание образовательных программ

Основная образовательная программа начального общего образования (далее-ООП НОО) разработана на основании:

-федерального закона от 29 декабря 2012 г. N 273-ФЗ “Об образовании в Российской Федерации”;

-федерального государственного образовательного стандарта начального общего образования, утвержденного Приказом Министерства образования и науки Российской Федерации от 06.10.2009 № 373;

– приказа Министерства образования и науки Российской Федерации от 26 ноября 2010 года № 1241 «О внесении изменений в федеральный государственный образовательный стандарт начального общего образования, утвержденный приказом Министерства образования и науки Российской Федерации от 6 октября 2009 г. № 373»;

– приказа Министерства образования и науки Российской Федерации от 22сентября 2011 года № 2357 «О внесении изменений в федеральный государственный образовательный стандарт начального общего образования, утвержденный приказом Министерства образования и науки Российской Федерации от 6 октября 2009 г. № 373»;

-приказа Министерства образования и науки РФ от 18 декабря 2012 г. № 1060 «О внесении изменений в федеральный государственный образовательный стандарт начального общего образования, утвержденный приказом Министерства образования и науки Российской Федерации от 6 октября 2009 г. N 373»;

-приказа Министерства образования и науки РФ от 29 декабря 2014 г. №1643 “О внесении изменений в приказ Министерства образования и науки Российской Федерации от 6 октября 2009 г. № 373 “Об утверждении и введении в действие федерального образовательного стандарта начального общего образования”;

-приказа Министерства образования и науки РФ от 18 мая 2015 г. №507 “О внесении изменений в приказ Министерства образования и науки Российской Федерации от 6 октября 2009 г. № 373 “Об утверждении и введении в действие федерального образовательного стандарта начального общего образования”;

-приказа Министерства образования и науки РФ от 31 декабря 2015 г. №1576 “О внесении изменений в приказ Министерства образования и науки Российской Федерации от 6 октября 2009 г. № 373 “Об утверждении и введении в действие федерального образовательного стандарта начального общего образования”;

-Устава муниципального бюджетного общеобразовательного учреждения «Средняя общеобразовательная школа №58» (далее – МБОУ «СОШ №58»).

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

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

Целевой раздел включает:
– пояснительную записку;
– планируемые результаты освоения обучающимися основной образовательной программы начального общего образования;
– систему оценки достижения планируемых результатов освоения основной образовательной программы начального общего образования.

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

Организационный раздел определяет общие рамки организации образовательной деятельности, а также механизмы реализации основной образовательной программы.

Организационный раздел включает:
– учебный план начального общего образования;
– план внеурочной деятельности;
– календарный учебный график;
– календарный план воспитательной работы;
– систему условий реализации основной образовательной программы в соответствии с требованиями Стандарта.

Нормативный срок освоения ООП НОО составляет четыре года.

Приказ МБОУ “СОШ №58” от 12.01.2021 №6/1 “О внесении изменений в основные образовательные программы НОО, ООО, СОО”

Изменения к основной образовательной программе начального общего образования муниципального бюджетного общеобразовательного учреждения “Средняя общеобразовательная школа №58”

Аннотация к основной образовательной программе начального общего образования

Аннотации к рабочим программам 1- 4 классов (ФГОС НОО) на 2020-2021 учебный год УМК «ШКОЛА РОССИИ»

Приказ МБОУ “СОШ №58” от 18.01.2021 №15/1 “Об утверждении рабочих программ воспитания НОО, ООО, СОО”

Приказ МБОУ “СОШ №58 имени генерал-майора М.В. Овсянникова” от 01.09.2021 №339 “Об изменении ООП НОО, ООО и включении в них календарных планов воспитательной работы МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова”

Рабочая программа воспитания НОО муниципального бюджетного общеобразовательного учреждения “Средняя общеобразовательная школа №58”

Основная образовательная программа основного общего образования (далее-ООП ООО) разработана в соответствии с:

– федеральным законом от 29 декабря 2012 г. № 273-ФЗ “Об образовании в Российской Федерации”;

– федеральным государственным образовательным стандартом основного общего образования, утвержденным Приказом Министерства образования и науки Российской Федерации от 17.12.2010 № 1897;

– приказом Министерства образования и науки Российской Федерации от 29декабря 2014 года № 1644 «О внесении изменений в приказ Министерства образования и науки Российской Федерации от 17.12.2010 № 1897 «Об утверждении федерального государственного образовательного стандарта основного общего образования»;

– приказом Министерства образования и науки Российской Федерации от 31 декабря 2015 года № 1577 «О внесении изменений в приказ Министерства образования и науки Российской Федерации от 17.12.2010 № 1897 «Об утверждении федерального государственного образовательного стандарта основного общего образования»;

– Уставом муниципального бюджетного общеобразовательного учреждения «Средняя общеобразовательная школа №58» (далее – МБОУ «СОШ №58»).

Основная образовательная программа ФГОС основного общего образования МБОУ «Средняя общеобразовательная школа № 58» на 2020 – 2025 учебные года

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

ООП ООО содержит обязательную часть и часть, формируемую участниками образовательных отношений.

Обязательная часть ООП ООО составляет 70%, а часть, формируемая участниками образовательных отношений, − 30% от общего объема ООП ООО.

ООП ООО МБОУ «СОШ №58»в соответствии с требованиями ФГОС ООО содержит три раздела: целевой, содержательный и организационный.

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

Целевой раздел включает:
– пояснительную записку;
– планируемые результаты освоения обучающимися ООП ООО;
– систему оценки достижения планируемых результатов освоения ООП ООО.

Содержательный раздел определяет общее содержание образования и включает образовательные программы, ориентированные на достижение личностных, предметных и метапредметных результатов в том числе:

– программу развития универсальных учебных действий (программу формирования общеучебных умений и навыков) при получении основного общего образования, включающую формирование компетенций обучающихся в области использования информационно-коммуникационных технологий, учебно-исследовательской и проектной деятельности;

– программу воспитания и социализации обучающихся при получении основного общего образования, включающую такие направления, как духовно-нравственное развитие и воспитание обучающихся, их социализация и профессиональная ориентация, формирование экологической культуры, культуры здорового и безопасного образа жизни;

– программу коррекционной работы.

Организационный раздел определяет общие рамки организации образовательной деятельности, а также механизм реализации компонентов основной образовательной программы.

Организационный раздел включает:
– учебный план основного общего образования, календарный учебный график и план внеурочной деятельности;
– систему условий реализации образовательной программы основного общего образования в соответствии с требованиями Стандарта;
– оценочные и методические материалы.

Нормативный срок освоения ООП ООО составляет пять лет.

Основная образовательная программа среднего общего образования (далее-ООП СОО) разработана в соответствии с:

– федеральным законом от 29 декабря 2012 г. № 273-ФЗ “Об образовании в Российской Федерации”;

– федеральным государственным образовательным стандартом среднего общего образования, утвержденным приказом Министерства образования и науки Российской Федерации от 17.05.2012 № 413;

– приказом Министерства образования и науки Российской Федерации от 29 образования и науки Российской Федерации от 17.05.2012 № 413 «Об утверждении федерального государственного образовательного стандарта среднего (полного) общего образования»;

– приказом Министерства образования и науки Российской Федерации от 31 декабря 2015 года № 1578 «О внесении изменений в приказ Министерства образования и науки Российской Федерации от 17.05.2012 № 413 «Об утверждении федерального государственного образовательного стандарта среднего (полного) общего образования»;

– приказом Министерства образования и науки Российской Федерации от 29 июня 2017 года № 613 «О внесении изменений в федеральный государственный образовательный стандарт среднего общего образования», утвержденный приказом Министерства образования и науки Российской Федерации от 17.05.2012 № 413;

-Уставом муниципального бюджетного общеобразовательного учреждения «Средняя общеобразовательная школа №58» (далее – МБОУ «СОШ №58»).

Изменения (корректировка) к Основной образовательной программе среднего общего образования МБОУ “Средняя общеобразовательная школа №58” на 2020 – 2022 учебные года

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

ООП СОО обеспечивает достижение обучающимися образовательных результатов в соответствии с требованиями, установленными федеральным государственным образовательным стандартом среднего общего образования (ФГОС СОО).

ООП СОО содержит обязательную часть и часть, формируемую участниками образовательных отношений. Обязательная часть ООП СОО составляет 60%, а часть, формируемая участниками образовательных отношений, − 40% от общего объема ООП СОО.

ООП СОО МБОУ «СОШ № 58» в соответствии с требованиями ФГОС СОО содержит три раздела: целевой, содержательный и организационный.

Целевой раздел определяетобщее назначение, цели, задачи, планируемые результаты реализации основной образовательной программы, а также способы определения достижения этих целей и результатов и включает:

– пояснительную записку;

– планируемые результаты освоения обучающимися основной образовательной программы среднего общего образования;

– систему оценки результатов освоения основной образовательной программы среднего общего образования.

Содержательный раздел определяет общее содержание среднего общего образования и включает образовательные программы, ориентированные на достижение личностных, предметных и метапредметных результатов, в том числе:

– программу развития универсальных учебных действий при получении среднего общего образования, включающую формирование компетенций обучающихся в области учебно-исследовательской и проектной деятельности;

– программы отдельных учебных предметов, курсов и курсов внеурочной деятельности;

– программу воспитания и социализации обучающихся при получении среднего общего образования, включающую такие направления, как духовно-нравственное развитие, воспитание обучающихся, их социализацию и профессиональную ориентацию, формирование экологической культуры, культуры здорового и безопасного образа жизни;

– программу коррекционной работы, включающую организацию работы с обучающимися с ограниченными возможностями здоровья и инвалидами.

Организационный раздел определяет общие рамки организации образовательной деятельности, а также механизмы реализации ООП СОО.

Организационный раздел основной образовательной программы среднего общего образования включает:

– учебные планы как один из основных механизмов реализации ООП СОО;

-план внеурочной деятельности, календарный учебный график;

– систему условий реализации ООП СОО в соответствии с требованиями ФГОС СОО.

Нормативный срок освоения ООП СОО составляет два года.

 

 

Учебный план

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (основное общее образование, 5-дневная рабочая неделя) на 2021-2022 год (недельный)

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (основное общее образование, 5-дневная рабочая неделя) на 2021-2022 год (годовой)

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (среднее общее образование, 5-дневная рабочая неделя) 10 класс (двухпрофильный с группами универсального и естественнонаучного профиля) на 2021-2022 год (недельный)

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (среднее общее образование, 5-дневная рабочая неделя) 10 класс (двухпрофильный с группами универсального и естественнонаучного профиля) на 2021-2022 год (годовой)

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” (среднее общее образование, 5-дневная рабочая неделя) 11 класс (универсальный профиль) на 2021-2022 учебный год

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” на 2021-2022 учебный год (начальное общее образование, 5-дневная рабочая неделя) (недельный)

Учебный план МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” на 2021-2022 учебный год (начальное общее образование, 5-дневная рабочая неделя) (годовой)

План внеурочной деятельности МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” на 2021-2022 учебный год. Начальное общее образование

 

 

Рабочие программы по каждой дисциплине образовательной программы (аннотации)

 

Реализуемые образовательные программы

Аннотации Естественно-математический цикл

 Скачать ZIP

Аннотации Иностранный язык

 Скачать ZIP

Аннотации Начальная школа

 Скачать ZIP

Аннотации Политехнический цикл

 Скачать ZIP

Аннотации Социально-гуманитарный цикл

 Скачать ZIP

Образовательная программа 1-4 классы
 Скачать PDF

ОБРАЗОВАТЕЛЬНАЯ ПРОГРАММА ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ ДЕТЕЙ
(нормативный срок реализации 1 год)

 Скачать PDF

Аннотации к рабочим программам по ФГОС среднего общего образования
 Скачать ZIP

Аннотации к рабочим программам ФГОС основного общего образования
 Скачать ZIP

 

Календарные учебные графики 2021-2022 уч. год

Приказ МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” от 03.11.2021 г №478 “О внесении изменений в основные образовательные программы начального общего, основного общего и среднего общего образования в части изменений календарных учебных графиков”

Приказ МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” от 29.10.2021 г №768 “О внесении изменений в основные образовательные программы начального общего, основного общего и среднего общего образования в части изменений календарных учебных графиков”

Приказ МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” от 18.10.2021 №455/1 “О внесении изменений в основные образовательные программы начального общего, основного общего и среднего общего образования в части изменения календарных учебных графиков”

Календарный учебный график начального общего образования МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” на 2021-2022 учебный год

Календарный учебный график основного общего образования МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” на 2021-2022 учебный год

Календарный учебный график среднего общего образования МБОУ “Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова” на 2021-2022 учебный год

 

 

Методические и другие документы, разработанные для образовательного процесса

Численность обучающихся по реализуемым образовательным программам за счет бюджетных ассигнований федерального бюджета, бюджетов субъектов Российской Федерации, местных бюджетов и по договорам об образовании за счет средств физических и (или) юридических лиц

Численность обучающихся МБОУ «Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова» по реализуемым образовательным программам:

– за счет бюджетных ассигнований федерального бюджета – нет

– за счет бюджетов субъектов Российской Федерации – нет

– за счет местных бюджетов – 2052 обучающийся

Начальное общее образование – 1235 человек

Основное общее образование – 817 человек

Среднее общее образование – 60 человек

– по договорам об образовании за счет средств физических и (или) юридических лиц – нет

Численность обучающихся – иностранных граждан

Обучающихся – иностранных граждан в МБОУ «Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова» в 2021-2022 учебном году -нет

Язык, на котором осуществляется образование

Обучение ведется на русском языке

Информация об основных программах профессионального обучения

МБОУ «Средняя общеобразовательная школа №58 имени генерал-майора М.В. Овсянникова» не реализует программы профессионального обучения

Информация о заключенных и планируемых к заключению договорах с иностранными и (или) международными организациями по вопросам образования и науки

Заключенных и планируемых к заключению договоров с иностранными и (или) международными организациями по вопросам образования и науки не имеется

 

 

 

Что такое объектно-ориентированное программирование? Четыре основные концепции ООП

Имя автора: Кайл Херрити
Автор:

Знание компьютерного программирования очень востребовано в современном технологически ориентированном обществе. Знание объектно-ориентированного программирования (ООП) может быть полезным при разработке и сопровождении программ. В этой статье мы обсуждаем основные принципы ООП и объясняем их на простых для понимания примерах.

Связано: 15 хорошо оплачиваемых вакансий в области компьютерных наук

Что такое объектно-ориентированное программирование?

Объектно-ориентированное программирование объединяет группу атрибутов данных с функциями или методами в единицу, называемую «объектом».«Обычно языки ООП основаны на классах, что означает, что класс определяет атрибуты данных и функции в качестве схемы для создания объектов, которые являются экземплярами класса. Популярные языки ООП на основе классов включают Java, Python и C ++. Несколько независимые объекты могут быть созданы – или представлены – из одного и того же класса и взаимодействовать друг с другом сложным образом.

Простым примером может быть класс, представляющий человека. Класс person будет содержать атрибуты для представления такой информации, как возраст человека, имя, рост и т. д.Определение класса может также содержать такие функции, как sayMyName, которые просто выводят имя этого человека на экран.

Семейство можно создать, создав экземпляры объектов person из класса для каждого члена семейства. Каждый объект person будет содержать разные атрибуты данных, поскольку каждый человек уникален.

Этот стиль программирования широко распространен в популярных языках программирования, таких как Java, C ++, Python, JavaScript и C # среди других. Путем определения наборов классов, которые представляют и инкапсулируют объекты в программе, классы могут быть организованы в модули, улучшая структуру и организацию программ.Таким образом, разработчики часто используют ООП как инструмент, когда им нужно создавать сложные программы, поскольку их легче рассуждать с точки зрения классов и их отношений.

Подробнее: 50 вопросов на собеседовании по объектно-ориентированному программированию

Четыре основы объектно-ориентированного программирования

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

  1. Инкапсуляция
  2. Абстракция
  3. Наследование
  4. Полиморфизм

1. Инкапсуляция

Слово «инкапсулировать» означает заключать что-либо. Подобно тому, как таблетка «инкапсулирует» или содержит лекарство внутри своего покрытия, принцип инкапсуляции работает аналогичным образом в ООП: формируя защитный барьер вокруг информации, содержащейся в классе, от остальной части кода.

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

Пример: Развивая предыдущий пример класса person, у нас могут быть частные данные в классе, такие как socialSecurityNumber, которые не должны предоставляться другим объектам в программе.Инкапсулируя этот член данных как частную переменную в классе, внешний код не будет иметь прямого доступа к нему, и он останется в безопасности внутри объекта этого человека.

Если в классе person написан метод для выполнения, скажем, банковской транзакции под названием «bankTransaction ()», эта функция может при необходимости обращаться к переменной «socialSecurityNumber». Личные данные человека будут хорошо инкапсулированы в такой класс.

2. Абстракция

Часто легче продумать и спроектировать программу, когда вы можете отделить интерфейс класса от его реализации и сосредоточиться на интерфейсе.Это похоже на отношение к системе как к «черному ящику», где не важно понимать кровавую внутреннюю работу, чтобы извлечь выгоду из ее использования.

Этот процесс называется «абстракцией» в ООП, потому что мы абстрагируемся от ужасных деталей реализации класса и представляем только чистый и простой в использовании интерфейс через функции-члены класса. При осторожном использовании абстракция помогает изолировать влияние изменений, внесенных в код, так что, если что-то пойдет не так, изменение повлияет только на детали реализации класса, а не на внешний код.

Пример: Представьте стереосистему как объект со сложной логической платой внутри. Снаружи у него есть кнопки, позволяющие взаимодействовать с объектом. Когда вы нажимаете любую из кнопок, вы не думаете о том, что происходит внутри, потому что вы этого не видите. Даже если вы не видите, что материнская плата выполняет эти функции в результате нажатия кнопки, она все равно их выполняет. , хоть и скрыт от вас.

Это концепция абстракции, которая невероятно полезна во всех областях инженерии, а также очень эффективно применяется в объектно-ориентированном программировании.

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

3. Наследование

Объектно-ориентированные языки, поддерживающие классы, почти всегда поддерживают понятие «наследования». Классы могут быть организованы в иерархии, где у класса может быть один или несколько родительских или дочерних классов. Если у класса есть родительский класс, мы говорим, что он является производным от родительского класса или унаследован от него и представляет собой отношение типа «IS-A».Другими словами, дочерний класс типа «IS-A» родительского класса.

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

Рассмотрим два класса: один является суперклассом или родительским, а другой подклассом или дочерним.Дочерний класс наследует свойства родительского класса, возможно, изменяя или расширяя его поведение. Программисты, применяющие технику наследования, упорядочивают эти классы в так называемые отношения типа «IS-A».

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

4. Полиморфизм

В ООП полиморфизм позволяет единообразно обрабатывать классы в иерархии. Следовательно, вызывающий код должен быть написан только для обработки объектов из корня иерархии, и любой объект, созданный любым дочерним классом в иерархии, будет обрабатываться таким же образом.

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

Пример: Предположим, у нас есть класс с именем «Животное» и два дочерних класса «Кошка» и «Собака». Если у класса Animal есть метод создания шума, называемый makeNoise, то мы можем переопределить функцию makeNoise, унаследованную подклассами «Cat» и «Dog», на «мяу». и «лаять» соответственно. Затем можно написать другую функцию, которая принимает любой объект Animal в качестве параметра и вызывает его функцию-член makeNoise.Шум будет разным: либо «мяу», либо «лай» в зависимости от типа животного объекта, который был фактически передан функции.

Связано: 56 вопросов на собеседовании по объектно-ориентированному программированию

Откройте для себя основные ресурсы Indeed для технических специалистов, включая советы по карьере, образцы резюме, быстрые ссылки для поиска работы и многое другое.

Объектно-ориентированное программирование на C ++

СОДЕРЖАНИЕ :

  1. Введение
  2. Класс
  3. Объекты
  4. Инкапсуляция
  5. Абстракция
  6. Полиморфизм
  7. Наследование
  8. Привязка динамического сообщения
  9. Объектно-ориентированное программирование – как следует из названия, в программировании используются объекты.Объектно-ориентированное программирование направлено на реализацию реальных сущностей, таких как наследование, скрытие, полиморфизм и т. Д. В программировании. Основная цель ООП – связать вместе данные и функции, которые с ними работают, чтобы никакая другая часть кода не могла получить доступ к этим данным, кроме этой функции.

    Характеристики языка объектно-ориентированного программирования


    Класс : Строительный блок C ++, который ведет к объектно-ориентированному программированию, – это класс.Это определяемый пользователем тип данных, который содержит свои собственные элементы данных и функции-члены, к которым можно получить доступ и использовать, создав экземпляр этого класса. Класс подобен проекту объекта.

    Например: рассмотрим класс автомобилей. Может быть много автомобилей с разными названиями и марками, но все они будут иметь некоторые общие свойства, например, все они будут иметь 4 колеса, ограничение скорости, диапазон пробега и т. Д. Итак, здесь Car – это класс, а колеса, ограничения скорости, пробег – это их свойства.

    • Класс – это определяемый пользователем тип данных, который имеет элементы данных и функции-члены.
    • Элементы данных – это переменные данных, а функции-члены – это функции, используемые для управления этими переменными, и вместе эти элементы данных и функции-члены определяют свойства и поведение объектов в классе.
    • В приведенном выше примере класса Car элементом данных будет ограничение скорости, пробег и т. Д., А функции-члены могут применять тормоза, увеличивать скорость и т. Д.

    Мы можем сказать, что класс в C ++ – это чертеж, представляющий группа объектов, обладающих некоторыми общими свойствами и поведением.

    Объект: Объект – это идентифицируемый объект с некоторыми характеристиками и поведением. Объект – это экземпляр класса. Когда класс определен, память не выделяется, но когда он создается (т. Е. Создается объект), выделяется память.

    класс человек

    {

    символ имя [20];

    внутр id;

    public :

    void getdetails () {}

    };

    int main ()

    {

    человек p1;

    }


    Объект занимает место в памяти и имеет связанный адрес, такой как запись в паскале или структура или объединение в C.

    Когда программа выполняется, объекты взаимодействуют, отправляя сообщения друг другу.

    Каждый объект содержит данные и код для управления данными. Объекты могут взаимодействовать без необходимости знать детали данных или кода друг друга, достаточно знать тип принятого сообщения и тип ответа, возвращаемого объектами.

    Инкапсуляция : Обычно инкапсуляция определяется как объединение данных и информации в один блок. В объектно-ориентированном программировании инкапсуляция определяется как связывание данных и функций, которые ими управляют.


    Рассмотрим реальный пример инкапсуляции, в компании есть разные разделы, такие как раздел счетов, финансовый раздел, отдел продаж и т. Д. Финансовый раздел обрабатывает все финансовые транзакции и хранит записи всех данных, связанных с финансами. . Точно так же секция продаж обрабатывает все операции, связанные с продажами, и ведет учет всех продаж. Теперь может возникнуть ситуация, когда чиновнику из финансового отдела по каким-то причинам понадобятся все данные о продажах за конкретный месяц.В этом случае ему не разрешен прямой доступ к данным раздела продаж. Сначала ему нужно будет связаться с другим сотрудником отдела продаж, а затем попросить его предоставить конкретные данные. Вот что такое инкапсуляция. Здесь данные отдела продаж и сотрудники, которые могут ими манипулировать, объединены под одним названием «отдел продаж».

    Инкапсуляция в C ++

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

    Абстракция : Абстракция данных – одна из наиболее существенных и важных функций объектно-ориентированного программирования на C ++. Абстракция означает отображение только важной информации и скрытие деталей. Абстракция данных относится к предоставлению только важной информации о данных внешнему миру, скрывая фоновые детали или реализацию.

    Рассмотрим пример из реальной жизни человека, управляющего автомобилем.Человек знает только, что нажатие на педаль акселератора увеличит скорость автомобиля или нажатие на педаль тормоза остановит машину, но он не знает, как на самом деле увеличивается скорость при нажатии на педаль акселератора, он не знает о внутреннем механизме автомобиля или внедрение в автомобиль акселератора, тормозов и т. д. Вот что такое абстракция.

    • Абстракция с использованием классов : Мы можем реализовать абстракцию на C ++ с помощью классов. Класс помогает нам группировать элементы данных и функции-члены с помощью доступных спецификаторов доступа.Класс может решить, какой член данных будет виден внешнему миру, а какой нет.
    • Абстракция в файлах заголовков : Еще одним типом абстракции в C ++ могут быть файлы заголовков. Например, рассмотрим метод pow (), присутствующий в заголовочном файле math.h. Всякий раз, когда нам нужно вычислить мощность числа, мы просто вызываем функцию pow (), присутствующую в файле заголовка math.h, и передаем числа в качестве аргументов, не зная базового алгоритма, согласно которому функция фактически вычисляет мощность чисел. .

    Полиморфизм: Слово полиморфизм означает наличие множества форм. Проще говоря, мы можем определить полиморфизм как способность сообщения отображаться в более чем одной форме.

    Человек одновременно может иметь разные характеристики. Как мужчина одновременно – это отец, муж, служащий. Итак, один и тот же человек ведет себя по-разному в разных ситуациях. Это называется полиморфизмом.

    В разных случаях операция может вести себя по-разному.Поведение зависит от типов данных, используемых в операции.

    C ++ поддерживает перегрузку операторов и функций.

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

    Пример : Предположим, нам нужно написать функцию для сложения некоторых целых чисел, иногда бывает 2 целых числа, иногда 3 целых числа. Мы можем написать метод сложения с тем же именем и разными параметрами, соответствующий метод будет вызываться в соответствии с параметрами.

    Наследование : способность класса извлекать свойства и характеристики из другого класса называется наследованием. Наследование – одна из важнейших функций объектно-ориентированного программирования.

    • Подкласс : Класс, наследующий свойства от другого класса, называется подклассом или производным классом.
    • Суперкласс : Класс, свойства которого наследуются подклассом, называется базовым классом или суперклассом.
    • Возможность повторного использования : Наследование поддерживает концепцию «повторного использования», т.е. когда мы хотим создать новый класс и уже есть класс, который включает в себя часть кода, который нам нужен, мы можем унаследовать наш новый класс от существующего класса. .Делая это, мы повторно используем поля и методы существующего класса.

    Пример : Собака, кошка, корова могут быть производным классом от базового класса животных.

    Динамическое связывание: При динамическом связывании код, который будет выполняться в ответ на вызов функции, определяется во время выполнения. В C ++ есть виртуальные функции для поддержки этого.


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

    Статьи по теме :

    Эта статья предоставлена ​​ Ванкаяла Карунакар . Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.


    Введение в объектно-ориентированное программирование

    Как следует из названия, объектно-ориентированное программирование или ООП относится к языкам, которые используют объекты в программировании. Объектно-ориентированное программирование направлено на реализацию реальных сущностей, таких как наследование, скрытие, полиморфизм и т. Д. В программировании. Основная цель ООП – связать вместе данные и функции, которые с ними работают, чтобы никакая другая часть кода не могла получить доступ к этим данным, кроме этой функции.

    Концепции ООП:

    Вниманию читателя! Все, кто говорит, что программирование не для детей, просто еще не встретили подходящих наставников.Присоединяйтесь к демонстрационному классу для первого шага к курсу кодирования, специально разработан для учащихся 8-12 классов.

    Студенты узнают больше о мире программирования в этих бесплатных классах , которые определенно помогут сделать правильный выбор карьеры в будущем.

    • Класс
    • Объекты
    • Абстракция данных
    • Инкапсуляция
    • Наследование
    • Полиморфизм
    • Динамическое связывание
    • Передача сообщения

    1.Класс:


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

    Например: Рассмотрим класс автомобилей. Может быть много автомобилей с разными названиями и марками, но все они будут иметь некоторые общие свойства, например, все они будут иметь 4 колеса, ограничение скорости, пробег и т. Д.Итак, автомобиль – это класс, а колеса, ограничения скорости, пробег – их свойства.

    2. Объект:

    Это базовая единица объектно-ориентированного программирования, представляющая реальные сущности. Объект – это экземпляр класса. Когда класс определен, память не выделяется, но когда он создается (т. Е. Создается объект), выделяется память. У объекта есть личность, состояние и поведение. Каждый объект содержит данные и код для управления данными. Объекты могут взаимодействовать без необходимости знать детали данных или кода друг друга, достаточно знать тип принятого сообщения и тип ответа, возвращаемого объектами.

    Например, «Собака» – это реальный объект, который имеет некоторые характеристики, такие как цвет, порода, лай, сон и ест.

    Объект

    3. Абстракция данных:

    Абстракция данных – одна из наиболее существенных и важных функций объектно-ориентированного программирования. Абстракция данных относится к предоставлению только важной информации о данных внешнему миру, скрывая фоновые детали или реализацию. Рассмотрим пример из реальной жизни, когда мужчина водит машину.Человек знает только, что нажатие на педаль акселератора увеличит скорость автомобиля или нажатие на педаль тормоза остановит машину, но он не знает, как при нажатии на акселератор увеличивается скорость, он не знает о внутреннем механизме автомобиля. или реализация акселератора, тормозов и т.д. в машине. Вот что такое абстракция.

    4. Инкапсуляция:


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

    Рассмотрим реальный пример инкапсуляции: в компании есть различные разделы, такие как раздел счетов, финансовый раздел, раздел продаж и т. Д. Финансовый раздел обрабатывает все финансовые транзакции и хранит записи всех связанных данных. финансировать.Точно так же секция продаж обрабатывает все операции, связанные с продажами, и ведет учет всех продаж. Теперь может возникнуть ситуация, когда чиновнику из финансового отдела по каким-то причинам понадобятся все данные о продажах за конкретный месяц. В этом случае ему не разрешен прямой доступ к данным раздела продаж. Сначала ему нужно будет связаться с другим сотрудником отдела продаж, а затем попросить его предоставить конкретные данные. Вот что такое инкапсуляция. Здесь данные отдела продаж и сотрудники, которые могут ими манипулировать, объединены под одним названием «отдел продаж».

    5. Наследование:

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

    6. Полиморфизм:

    Слово полиморфизм означает наличие множества форм. Проще говоря, мы можем определить полиморфизм как способность сообщения отображаться в более чем одной форме. Например, человек одновременно может иметь разные характеристики. Как мужчина одновременно – это отец, муж, служащий. Итак, один и тот же человек ведет себя по-разному в разных ситуациях. Это называется полиморфизмом.

    7. Динамическое связывание:

    При динамическом связывании код, который должен быть выполнен в ответ на вызов функции, определяется во время выполнения. Динамическое связывание означает, что код, связанный с данным вызовом процедуры, неизвестен до момента вызова во время выполнения. Связывание динамического метода Одним из основных преимуществ наследования является то, что некоторый производный класс D имеет все члены своего базового класса B. Если D не скрывает ни один из открытых членов B, то объект D может представлять B в любом контексте. где можно использовать B.Эта функция известна как полиморфизм подтипа.

    8. Передача сообщений:

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

    2.5 Объектно-ориентированное программирование

    2.5 Объектно-ориентированное программирование

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

    Объектная система предлагает больше, чем просто удобство. Это дает новую метафору для разработки программ, в которых несколько независимых агентов взаимодействуют внутри компьютер. Каждый объект объединяет локальное состояние и поведение в способ, который абстрагирует сложность обоих. Объекты общаются друг с другом, а полезные результаты вычисляются как следствие их взаимодействия.Нет только объекты передают сообщения, они также разделяют поведение среди других объектов того же типа и наследуют характеристики от связанных типов.

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

    2.5.1 Объекты и классы

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

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

    Класс Account позволяет нам создавать несколько экземпляров банковских счетов. Акт создания нового экземпляра объекта известен как создания экземпляра объекта класс. Синтаксис Python для создания экземпляра класса идентичен синтаксису синтаксис вызова функции.В этом случае мы вызываем Account с аргумент «Кирк», имя владельца счета.

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

     >>> a.holder
    'Кирк'
    >>> а. баланс
    0
     

    Функции, которые работают с объектом или выполняют объектно-ориентированные вычисления: вызываемые методы. Возвращаемые значения и побочные эффекты метода могут зависеть от и изменить другие атрибуты объекта. Например, депозит – это метод нашего объекта Account a. Требуется один аргумент, сумма депозит, изменяет атрибут баланса объекта и возвращает результирующий баланс.

    Мы говорим, что методы вызываются для определенного объекта.Как результат вызова метода вывода, либо вывод утверждается, и сумма вычитается, или запрос отклоняется и метод возвращает ошибку сообщение.

     >>> a.withdraw (10) # Метод вывода возвращает баланс после вывода
    5
    >>> a.balance # Атрибут баланса изменился
    5
    >>> a.withdraw (10)
    'Недостаточно средств'
     

    Как показано выше, поведение метода может зависеть от изменения атрибуты объекта.Два призыва к отказу с одним и тем же аргументом вернуть разные результаты.

    2.5.2 Определение классов

    Пользовательские классы создаются операторами класса, которые состоят из единственная статья. Оператор класса определяет имя класса, а затем включает набор операторов для определения атрибутов класса:

    класс <имя>:
        <набор>
     

    Когда выполняется инструкция класса, создается новый класс и связывается с ним. <имя> в первом кадре текущего окружения.Люкс тогда выполнен. Любые имена, связанные внутри оператора класса, с помощью операторов def или присваивания создайте или измените атрибуты класс.

    Классы обычно организованы для управления атрибутами экземпляра, которые пары имя-значение, связанные с каждым экземпляром этого класса. В class определяет атрибуты экземпляра своих объектов, определяя метод для инициализация новых объектов. Например, часть инициализации объекта Класс счета – присвоить ему начальный баланс 0.

    <набор> оператора класса содержит операторы def, которые определяют новые методы для объектов этого класса. Метод, который инициализирует объекты, имеет специальное имя в Python, __init__ (два подчеркивания с каждой стороны слово «init») и называется конструктором для класса.

     >>> класс Аккаунт:
    def __init __ (self, account_holder):
    self.balance = 0
    self.holder = account_holder
     

    Метод __init__ для Account имеет два формальных параметра.Первое one, self, привязан к вновь созданному объекту Account. Секунда параметр account_holder привязан к аргументу, переданному классу когда он вызывается для создания экземпляра.

    Конструктор привязывает баланс имени атрибута экземпляра к 0. Он также связывает владельца имени атрибута со значением имени владелец счета. Формальный параметр account_holder – это локальное имя в метод __init__. С другой стороны, имя держателя, связанного через последний оператор присваивания сохраняется, потому что он сохраняется как атрибут себя с использованием точечной записи.

    Определив класс Account, мы можем создать его экземпляр.

    Этот «вызов» класса Account создает новый объект, который является экземпляром Account, затем вызывает функцию-конструктор __init__ с двумя аргументы: вновь созданный объект и строка «Кирк». По условию мы используйте имя параметра self для первого аргумента конструктора, потому что он привязан к создаваемому объекту. Эта конвенция принята в практически весь код Python.

    Теперь мы можем получить доступ к балансу и держателю объекта, используя точечную нотацию.

     >>> а. Баланс
    0
    >>> а.холдер
    'Кирк'
     

    Идентификация. Каждый новый экземпляр учетной записи имеет свой собственный атрибут баланса, значение которого не зависит от других объектов того же класса.

     >>> b = Аккаунт ('Spock')
    >>> b.balance = 200
    >>> [соотв. баланс для соотв. (a, b)]
    [0, 200]
     

    Для обеспечения этого разделения каждый объект, который является экземпляром определяемого пользователем класс имеет уникальную идентичность. Идентичность объекта сравнивается с использованием is и это не операторы.

     >>> а - это
    Правда
    >>> а не б
    Правда
     

    Несмотря на то, что они построены из идентичных вызовов, объекты, привязанные к a и б не то же самое. Как обычно, привязка объекта к новому имени с помощью присвоение не создает новый объект.

     >>> с = а
    >>> c - это
    Правда
     

    Новые объекты с пользовательскими классами создаются только тогда, когда класс (например, as Account) создается с синтаксисом выражения вызова.

    Методы. Методы объекта также определяются оператором def в наборе заявления класса. Ниже определены как пополнение, так и снятие средств. как методы для объектов класса Account.

     >>> класс Аккаунт:
    def __init __ (self, account_holder):
    self.balance = 0
    self.holder = account_holder
    депозит (сам, сумма):
    self.balance = self.balance + количество
    вернуть самобаланс
    def вывести (самостоятельно, сумма):
    если сумма> self.остаток средств:
    вернуть "Недостаточно средств"
    self.balance = self.balance - количество
    вернуть самобаланс
     

    Хотя определения методов не отличаются от определений функций тем, как они объявлены, определения методов имеют другой эффект при выполнении. В значение функции, которое создается оператором def внутри класса оператор привязан к объявленному имени, но привязан локально внутри класса как атрибут. Это значение вызывается как метод, использующий точечную нотацию из экземпляр класса.

    Каждое определение метода снова включает специальный первый параметр self, который привязан к объекту, для которого вызывается метод. Например, допустим, что депозит вызывается для определенного объекта Account и передано единственное значение аргумента: внесенная сумма. Сам объект привязан к себе, а аргумент привязан к сумме. Все задействованы методы имеют доступ к объекту через параметр self, поэтому они могут весь доступ и управление состоянием объекта.

    Чтобы вызвать эти методы, мы снова используем точечную нотацию, как показано ниже.

     >>> spock_account = Аккаунт ('Спок')
    >>> spock_account.deposit (100)
    100
    >>> spock_account.withdraw (90)
    10
    >>> spock_account.withdraw (90)
    'Недостаточно средств'
    >>> spock_account.holder
    'Спок'
     

    Когда метод вызывается через точечную нотацию, сам объект (привязанный к spock_account, в данном случае) играет двойную роль. Во-первых, он определяет, что название средства отзыва; уйти – это не имя в среде, а вместо этого имя, которое является локальным для класса Account.Во-вторых, это обязательно первый параметр self при вызове метода вывода.

    2.5.3 Передача сообщений и точечные выражения

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

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

    Точечные выражения. Фрагмент кода spock_account.deposit называется точкой выражение . Выражение с точкой состоит из выражения, точки и имени:

    <выражение>. <имя>
     

    <выражение> может быть любым допустимым выражением Python, но <имя> должно быть простым именем (а не выражением, которое оценивается как имя).Точечное выражение оценивает значение атрибута с данным для объект, который является значением <выражения>.

    Встроенная функция getattr также возвращает атрибут для объекта по имя. Это функциональный эквивалент записи через точку. Используя getattr, мы можем ищите атрибут, используя строку, так же, как мы это делали с диспетчерским словарем.

     >>> getattr (spock_account, 'баланс')
    10
     

    Мы также можем проверить, имеет ли объект именованный атрибут с помощью hasattr.

     >>> hasattr (spock_account, 'депозит')
    Правда
     

    Атрибуты объекта включают все атрибуты его экземпляра, а также все атрибуты (включая методы), определенные в его классе. Методы атрибуты класса, требующие особой обработки.

    Методы и функции. Когда метод вызывается для объекта, этот объект неявно передается в метод как первый аргумент. То есть объект, который передается значение <выражения> слева от точки автоматически в качестве первого аргумента метода, указанного в правой части точечное выражение.В результате объект привязывается к параметру self.

    Для достижения автоматической привязки Python различает функций , которые мы создаем с самого начала текста, и связывают методы , которые объединяют функцию и объект, на котором этот метод будет вызван. Связанное значение метода уже связано с его первый аргумент, экземпляр, для которого он был вызван, который будет назван self при вызове метода.

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

     >>> тип (Account.deposit)
    <класс 'функция'>
    >>> тип (spock_account.deposit)
    <класс 'метод'>
     

    Эти два результата отличаются только тем, что первый является стандартным. двухаргументная функция с параметрами self и amount. Секунда это метод с одним аргументом, в котором имя self будет привязано к объекту называется spock_account автоматически при вызове метода, а количество параметра будет привязано к аргументу, переданному методу.Оба эти значения, будь то значения функций или значения связанных методов, связаны с тем же телом функции депозита.

    Мы можем вызвать депозит двумя способами: как функцию и как связанный метод. В В первом случае мы должны предоставить аргумент для параметра self явно. В последнем случае параметр self привязывается автоматически.

     >>> Account.deposit (spock_account, 1001) # Функция депозита принимает 2 аргумента
    1011
    >>> spock_account.deposit (1000) # Метод депозита принимает 1 аргумент
    2011 г.
     

    Функция getattr ведет себя точно так же, как точечная запись: если она первая аргумент – это объект, но имя – это метод, определенный в классе, тогда getattr возвращает значение связанного метода.С другой стороны, если первый аргумент является классом, тогда getattr возвращает значение атрибута напрямую, которая является простой функцией.

    Соглашения об именах. Имена классов обычно записываются с использованием Соглашение CapWords (также называемое CamelCase, потому что заглавные буквы в середина имени выглядит как горбинка). Имена методов соответствуют стандартному соглашению именования функций с использованием слов в нижнем регистре, разделенных подчеркиванием.

    В некоторых случаях существуют переменные экземпляра и методы, связанные с поддержание и согласованность объекта, что мы не хотим, чтобы пользователи объекта видеть или использовать.Они не являются частью абстракции, определенной классом, но вместо части реализации. Соглашение Python гласит, что если имя атрибута начинается с подчеркивания, доступ к нему должен быть только внутри методы самого класса, а не пользователями класса.

    2.5.4 Атрибуты класса

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

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

     >>> класс Аккаунт:
    интерес = 0,02 # Атрибут класса
    def __init __ (self, account_holder):
    self.balance = 0
    self.holder = account_holder
    # Здесь будут определены дополнительные методы
     

    К этому атрибуту все еще можно получить доступ из любого экземпляра класса.

     >>> spock_account = Аккаунт ('Спок')
    >>> kirk_account = Аккаунт ('Кирк')
    >>> spock_account.interest
    0,02
    >>> kirk_account.интерес
    0,02
     

    Однако один оператор присваивания атрибуту класса изменяет значение атрибут для всех экземпляров класса.

     >>> Account.interest = 0,04
    >>> spock_account.interest
    0,04
    >>> kirk_account.interest
    0,04
     

    Имена атрибутов. Мы внесли достаточно сложности в нашу объектную систему что мы должны указать, как имена разрешаются в определенные атрибуты. После все, мы могли бы легко иметь атрибут класса и атрибут экземпляра с то же имя.

    Как мы видели, выражение с точкой состоит из выражения, точки и имени:

    <выражение>. <имя>
     

    Чтобы вычислить точечное выражение:

    1. Вычислите <выражение> слева от точки, что дает объект точечного выражения.
    2. <имя> сопоставляется с атрибутами экземпляра этого объекта; если атрибут с таким именем существует, возвращается его значение.
    3. Если <имя> не появляется среди атрибутов экземпляра, то <имя> поискал в классе, который дает значение атрибута класса.
    4. Это значение возвращается, если оно не является функцией, и в этом случае связанный метод вместо этого возвращается.

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

    Назначение атрибута. Все операторы присваивания, содержащие точку выражение на их левой стороне влияет на атрибуты объекта этой точки выражение. Если объект является экземпляром, то присвоение устанавливает экземпляр атрибут. Если объект является классом, то присвоение устанавливает атрибут класса. Как следствие этого правила, присвоение атрибуту объекта не может влияют на атрибуты своего класса. Примеры ниже иллюстрируют это различие.

    Если мы присвоим названному атрибуту интерес экземпляра учетной записи, мы создать новый атрибут экземпляра с тем же именем, что и существующий класс атрибут.

     >>> kirk_account.interest = 0,08
     

    , и значение этого атрибута будет возвращено из точечного выражения.

     >>> kirk_account.interest
    0,08
     

    Однако интерес атрибута класса все еще сохраняет свое первоначальное значение, который возвращается для всех остальных учетных записей.

     >>> spock_account.interest
    0,04
     

    Изменения интереса к атрибуту класса повлияют на spock_account, но Атрибут экземпляра для kirk_account не будет затронут.

     >>> Account.interest = 0.05 # изменение атрибута класса
    >>> spock_account.interest # изменяет экземпляры без одноименных атрибутов экземпляра
    0,05
    >>> kirk_account.interest # но существующий атрибут экземпляра не изменяется
    0,08
     

    2.5.5 Наследование

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

    Например, мы можем захотеть реализовать текущий счет, который отличается со стандартного аккаунта. С текущего счета взимается дополнительная плата в размере 1 доллара США за каждую вывод и имеет более низкую процентную ставку. Здесь мы демонстрируем желаемый поведение.

     >>> ch = CheckingAccount ('Spock')
    >>> ch.interest # Пониженная процентная ставка для текущих счетов
    0,01
    >>> ch.deposit (20) # Депозиты такие же
    20
    >>> гл.снять (5) # снятие средств уменьшить баланс на дополнительную плату
    14
     

    CheckingAccount – это специализация учетной записи. В ООП терминологии, общий аккаунт будет служить базовым классом CheckingAccount, а CheckingAccount будет подклассом Счет. (Термины родительский класс и суперкласс также используются для базовый класс, в то время как дочерний класс также используется для подкласса.)

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

    Наследование также играет роль в нашей метафоре объекта, помимо того, что полезная организационная функция. Наследование предназначено для представления is-a отношения между классами, которые контрастируют с отношениями has-a . А текущий счет – это особый тип счета , поэтому наличие Наследование CheckingAccount от Account – это подходящее использование наследование.С другой стороны, банк имеет список банковских счетов, которые он управляет, поэтому ни один из них не должен наследовать друг от друга. Вместо этого список учетных записей Объекты будут естественно выражаться как атрибут экземпляра объекта банка.

    2.5.6 Использование наследования

    Во-первых, мы даем полную реализацию класса Account, который включает строки документации для класса и его методов.

     >>> класс Аккаунт:
    "" "Банковский счет с неотрицательным балансом."" "
    проценты = 0,02
    def __init __ (self, account_holder):
    self.balance = 0
    self.holder = account_holder
    депозит (сам, сумма):
    "" "Увеличьте остаток на счете на сумму и верните новый остаток." ""
    self.balance = self.balance + количество
    вернуть самобаланс
    def вывести (самостоятельно, сумма):
    "" "Уменьшите остаток на счете на сумму и верните новый остаток." ""
    если сумма> собственный баланс:
    вернуть "Недостаточно средств"
    себя.balance = self.balance - сумма
    вернуть самобаланс
     

    Полная реализация CheckingAccount представлена ​​ниже. Мы указываем наследование путем помещения выражения, оценивающего базовый класс, в круглые скобки после имени класса.

     >>> класс CheckingAccount (Аккаунт):
    "" "Банковский счет, на котором взимается комиссия за снятие средств." ""
    remove_charge = 1
    проценты = 0,01
    def вывести (самостоятельно, сумма):
    return Account.withdraw (self, amount + self.remove_charge)
     

    Здесь мы вводим атрибут класса cerew_charge, который специфичен для CheckingAccount класс. Мы присваиваем более низкое значение проценту атрибут. Мы также определяем новый метод вывода, чтобы переопределить поведение определен в классе Account. Без дополнительных инструкций в наборе классов, все остальное поведение наследуется от базового класса Account.

     >>> check = CheckingAccount ('Сэм')
    >>> check.deposit (10)
    10
    >>> Проверяю.снять (5)
    4
    >>> check.interest
    0,01
     

    Выражение check.deposit вычисляет связанный метод для создания депозиты, которые были определены в классе Account. Когда Python разрешает имя в точечном выражении, которое не является атрибутом экземпляра, оно ищет имя в классе. Фактически, “поиск” имени в класс пытается найти это имя в каждом базовом классе в цепочке наследования для исходный класс объекта. Мы можем определить эту процедуру рекурсивно.Смотреть имя в классе.

    1. Если он называет атрибут в классе, вернуть значение атрибута.
    2. В противном случае найдите имя в базовом классе, если он есть.

    В случае депозита Python сначала искал имя на экземпляр, а затем в классе CheckingAccount. Наконец, он заглянул в класс Account, в котором определяется депозит. По нашей оценке правило для точечных выражений, так как депозит – это функция, найденная в классе для проверяющего экземпляра точечное выражение оценивается как связанный метод ценить.Этот метод вызывается с аргументом 10, который вызывает депозит метод с привязкой к объекту проверки и суммой, привязанной к 10.

    Класс объекта остается постоянным на всем протяжении. Хотя залог был найден в классе Account, депозит вызывается самостоятельно привязан к экземпляру CheckingAccount, а не Account.

    Вызов предков. Атрибуты, которые были переопределены, все еще доступный через объекты класса. Например, мы реализовали метод вывода CheckingAccount путем вызова вывода Метод Account с аргументом, который включает функцию снятия_зарядки.

    Обратите внимание, что мы вызвали self.withdraw_charge, а не эквивалент CheckingAccount.withdraw_charge. Преимущество первого перед вторым заключается в том, что класс, наследуемый от CheckingAccount, может переопределить комиссия за снятие. Если это так, нам бы хотелось, чтобы наша реализация уйти, чтобы найти это новое значение вместо старого.

    Интерфейсы. Очень часто в объектно-ориентированных программах разные типы объектов будут иметь одни и те же имена атрибутов.Объект интерфейс – это набор атрибутов и условий для этих атрибутов. Например, все счета должны иметь методы пополнения и снятия средств, которые принимать числовые аргументы, а также атрибут баланса. Классы Account и CheckingAccount реализуют этот интерфейс. Наследование специально продвигает таким образом совместное использование имен. В некоторых языках программирования такие как Java, реализации интерфейса должны быть явно объявлены. В других такие как Python, Ruby и Go, любой объект с соответствующими именами реализует интерфейс.

    Части вашей программы, которые используют объекты (а не реализуют их): наиболее устойчивы к будущим изменениям, если они не делают предположений об объекте типы, но только об именах их атрибутов. То есть они используют абстракцию объекта, а не предполагать что-либо о его реализации.

    Например, предположим, что мы проводим лотерею и хотим внести 5 долларов в каждый из списка учетных записей. Следующая реализация не предполагает что-либо о типах этих учетных записей, и поэтому работает одинаково хорошо с любым типом объекта, имеющим метод депозита:

     >>> def deposit_all (победители, сумма = 5):
    на счет в победителях:
    учетная запись.сумма вклада)
     

    Вышеупомянутая функция deposit_all предполагает только то, что каждая учетная запись удовлетворяет абстракция объекта учетной записи, поэтому она будет работать с любой другой учетной записью классы, которые также реализуют этот интерфейс. Предполагая конкретный класс учетная запись нарушит барьер абстракции объекта учетной записи абстракция. Например, следующая реализация не обязательно работа с новыми видами счетов:

     >>> def deposit_all (победители, сумма = 5):
    на счет в победителях:
    Счет.депозит (счет, сумма)
     

    Мы рассмотрим эту тему более подробно позже в этой главе.

    2.5.7 Множественное наследование

    Python поддерживает концепцию подкласса, наследующего атрибуты от нескольких базовые классы, языковая функция , множественное наследование .

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

     >>> класс SavingsAccount (Счет):
    deposit_charge = 2
    депозит (сам, сумма):
    вернуть Аккаунт.депозит (self, сумма - self.deposit_charge)
     

    Затем умный руководитель задумывает учетную запись AsSeenOnTVAccount с лучшие возможности CheckingAccount и SavingsAccount: снятие средств комиссии, депозитные комиссии и низкая процентная ставка. Это и проверка, и экономия аккаунт в одном! «Если мы построим это, – рассуждают руководители, – кто-то подпишется. и заплатить все эти сборы. Мы даже дадим им доллар ».

     >>> класс AsSeenOnTVAccount (CheckingAccount, SavingsAccount):
    def __init __ (self, account_holder):
    себя.держатель = account_holder
    self.balance = 1 # Бесплатный доллар!
     

    Фактически на этом реализация завершена. Как снятие, так и депозиты будут генерировать комиссии, используя определения функций в CheckingAccount и SavingsAccount соответственно.

     >>> such_a_deal = AsSeenOnTVAccount ("Джон")
    >>> such_a_deal.balance
    1
    >>> such_a_deal.deposit (20) # 2 доллара от SavingsAccount.deposit
    19
    >>> such_a_deal.withdraw (5) # Комиссия в размере $ 1 с CheckingAccount.снять со счета
    13
     

    Однозначные ссылки разрешены правильно, как и ожидалось:

     >>> such_a_deal.deposit_charge
    2
    >>> such_a_deal.withdraw_charge
    1
     

    Но как быть, если ссылка неоднозначна, например, ссылка на метод снятия средств, определенный как в Account, так и в CheckingAccount? На рисунке ниже изображен граф наследования для AsSeenOnTVAccount. класс. Каждая стрелка указывает от подкласса к базовому классу.

    Для простой формы «ромба», подобной этой, Python разрешает имена слева направо вправо, затем вверх.В этом примере Python проверяет имя атрибута в следующие классы по порядку, пока не будет найден атрибут с таким именем:

    AsSeenOnTVAccount, CheckingAccount, SavingsAccount, Account, объект
     

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

    Дополнительная литература. Python разрешает это имя с помощью рекурсивного алгоритма называется упорядочением разрешения методов C3. Порядок разрешения метода любого class можно запросить с помощью метода mro для всех классов.

     >>> [c .__ name__ для c в AsSeenOnTVAccount.mro ()]
    ['AsSeenOnTVAccount', 'CheckingAccount', 'SavingsAccount', 'Account', 'object']
     

    Точный алгоритм нахождения порядка разрешения методов не является темой для этот текст, но он описан основным автором Python с помощью ссылка на оригинал статьи.

    2.5.8 Роль объектов

    Объектная система Python предназначена для абстракции данных и сообщения прохождение одновременно удобно и гибко. Специализированный синтаксис классов, методы, наследование и точечные выражения позволяют нам формализовать объект метафора в наших программах, которая улучшает нашу способность организовывать большие программы.

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

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

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

    Мультипарадигмальные языки, такие как Python, позволяют программистам подбирать организационные парадигмы к соответствующим проблемам. Научиться определять, когда нужно ввести новый класс вместо новой функции, чтобы упростить или Модульность программы – важный навык проектирования в программной инженерии, который заслуживает пристального внимания.

    Объектно-ориентированное программирование: объекты, классы и методы – видео и стенограмма урока

    Классы и объекты

    Класс – это чертеж объекта.Вы можете думать о классе как о концепции, а объект является ее воплощением. Прежде чем создавать объект, вам нужен класс. Итак, допустим, вы хотите использовать человека в своей программе. Вы хотите иметь возможность описать человека и заставить его что-то сделать. Класс под названием «человек» предоставит план того, как человек выглядит и что он может делать. Чтобы действительно использовать человека в своей программе, вам нужно создать объект. Вы используете класс person для создания объекта типа person.«Теперь вы можете описать этого человека и заставить его что-нибудь сделать.

    Классы очень полезны в программировании. Рассмотрим пример, когда вы хотите использовать не одного человека, а 100 человек. Вместо того, чтобы подробно описывать каждый из них с нуля, вы можете использовать один и тот же класс person для создания 100 объектов типа «человек». Вы все равно должны дать каждому имя и другие свойства, но основная структура того, как выглядит человек, остается неизменной.

    Методы и функции

    После создания объектов вы хотите, чтобы они могли что-то делать.Здесь на помощь приходят методы. Метод в объектно-ориентированном программировании – это процедура, связанная с классом. Метод определяет поведение объектов, созданных из класса. Другой способ сказать это: метод – это действие, которое объект может выполнить. Связь между методом и классом называется привязкой. Рассмотрим пример объекта типа “человек”, созданного с использованием класса “человек”. Методы, связанные с этим классом, могут включать такие вещи, как ходьба и вождение.Иногда методы путают с функциями, но они разные.

    Функция – это комбинация инструкций, которые объединяются для достижения определенного результата. Функция обычно требует ввода (называемых аргументами) и возвращает некоторые результаты. Например, рассмотрим пример вождения автомобиля. Чтобы определить пробег, вам необходимо выполнить расчет, используя пройденное расстояние и количество израсходованного топлива. Вы можете написать функцию для выполнения этого расчета. Аргументами, входящими в функцию, будут расстояние и расход топлива, а результатом будет пробег.Каждый раз, когда вы хотите определить пробег, вы просто вызываете функцию для выполнения расчета.

    Чем это отличается от метода? Функция независима и не связана с классом. Вы можете использовать эту функцию в любом месте вашего кода, и вам не нужен объект для ее использования.

    А что, если бы вы связали функцию с объектом типа «автомобиль»? Например, вы хотите, чтобы на приборной панели отображался пробег автомобиля. В данном случае расчет пробега стал методом, потому что это процедура, связанная с классом автомобиля.Каждый раз, когда вы создаете новый объект типа car с использованием класса car, этот метод будет частью объекта. Теперь автомобиль может рассчитывать пробег. Это тот же расчет, что и автономная функция, но теперь он привязан к автомобилю.

    Концепции ООП

    Объектно-ориентированное программирование построено на нескольких концепциях. Эти концепции реализуются с использованием классов, объектов и методов, но полезно рассмотреть эти концепции в более общем плане.Четыре основных концепции объектно-ориентированного программирования – это абстракция, инкапсуляция, наследование и полиморфизм.

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

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

    Наследование – это процесс, при котором новые классы создаются из существующих классов и наследуют общие характеристики этих классов.Рассмотрим класс person, который используется для создания двух новых классов с именами woman и man. Новые классы наследуют свойства класса person, что позволяет сэкономить на коде. У каждого из новых классов действительно есть некоторые уникальные свойства, но гораздо проще добавить их к существующему классу, чем начинать с нуля. Наследование – это один из примеров возможности повторного использования кода, который делает ООП очень эффективным для определенных задач.

    Полиморфизм означает иметь одно имя, но несколько форм. Это означает, что свойства объекта могут изменяться в зависимости от контекста.Например, объект под названием “человек” может считаться владельцем, находясь внутри машины, и сотрудником, находясь в офисе. Эти концепции сделали объектно-ориентированное программирование наиболее широко используемым подходом в современной разработке программного обеспечения.

    Краткое содержание урока

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

    Метод – это процедура, связанная с классом, которая определяет поведение объектов, созданных из класса. Функция – это комбинация инструкций, которые объединяются для достижения определенного результата. Функция независима и не связана с классом. В объектно-ориентированном программировании используется ряд основных концепций: абстракция, инкапсуляция, наследование и полиморфизм.Эти концепции реализуются с использованием классов, объектов и методов.

    Результаты обучения

    После этого видеоурока вы должны уметь:

    • Обобщить, как работает объектно-ориентированное программирование
    • Определить объект, класс и метод
    • Различия между методом и функцией
    • Объясните четыре основных концепции объектно-ориентированного программирования

    Объектно-ориентированный JavaScript для начинающих – Изучите веб-разработку

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

    Предварительные требования: Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Строительные блоки) и основы OOJS (см. Знакомство с предметами).
    Цель: Чтобы понять основную теорию объектно-ориентированного программирования, как это относится к JavaScript («все является объектом») и к тому, как создавать конструкторы и экземпляры объектов.

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

    Объекты могут содержать связанные данные и код, которые представляют информацию об объекте, который вы пытаетесь смоделировать, а также о функциональных возможностях или поведении, которые вы хотите, чтобы он имел. Данные объекта (а часто и функции) можно аккуратно хранить (официальное слово – , инкапсулированный ) внутри пакета объекта (которому можно дать конкретное имя для ссылки, которое иногда называют пространством имен ), что делает его легко структурировать и получить доступ; объекты также обычно используются в качестве хранилищ данных, которые можно легко пересылать по сети.

    Определение шаблона объекта

    Рассмотрим простую программу, отображающую информацию об учениках и учителях в школе. Здесь мы рассмотрим теорию ООП в целом, а не в контексте какого-либо конкретного языка программирования.

    Для начала мы могли бы вернуться к нашему типу объекта Person из нашей первой статьи об объектах, которая определяет общие данные и функциональность человека. Есть много вещей, которые вы могли бы знать о человеке (их адрес, рост, размер обуви, профиль ДНК, номер паспорта, важные черты личности…), но в этом случае нас интересует только их имя, возраст, пол и интересы, а также мы хотим иметь возможность написать о них краткое введение на основе этих данных и заставить их поздороваться. Это известно как абстракция – создание простой модели более сложной вещи, которая представляет ее наиболее важные аспекты таким образом, чтобы с ней было легко работать для целей нашей программы.

    Создание реальных объектов

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

    Когда экземпляр объекта создается из класса, для его создания запускается функция конструктора класса . Этот процесс создания экземпляра объекта из класса называется экземпляром – экземпляр объекта создан экземпляром из класса.

    Классы специалистов

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

    Это действительно полезно – учителя и ученики имеют много общих черт, таких как имя, пол и возраст, поэтому удобно определять эти особенности только один раз.Вы также можете определить одну и ту же функцию отдельно в разных классах, так как каждое определение этой функции будет в другом пространстве имен. Например, приветствие ученика может иметь форму «Йо, я [имя]» (например, Йо, я Сэм ), тогда как учитель может использовать что-то более формальное, например «Привет, меня зовут [Prefix] [lastName], и ​​я преподаю [Subject] ». (например, Здравствуйте, меня зовут мистер Гриффитс, я преподаю химию ).

    Примечание: Модное слово для обозначения способности нескольких типов объектов реализовывать одну и ту же функциональность – это полиморфизм .На всякий случай вам было интересно.

    Теперь вы можете создавать экземпляры объектов из дочерних классов. Например:

    В оставшейся части статьи мы начнем смотреть, как теорию ООП можно применить на практике в JavaScript.

    JavaScript использует специальные функции, называемые функциями конструктора , для определения и инициализации объектов и их функций. Они полезны, потому что вы часто будете сталкиваться с ситуациями, в которых вы не знаете, сколько объектов вы будете создавать; конструкторы предоставляют средства для эффективного создания сколь угодно большого количества объектов, присоединяя к ним данные и функции по мере необходимости.

    Давайте рассмотрим создание классов с помощью конструкторов и создание из них экземпляров объектов в JavaScript. Прежде всего, мы хотели бы, чтобы вы сделали новую локальную копию файла oojs.html, который мы видели в нашей первой статье об объектах.

    Простой пример

    1. Давайте начнем с рассмотрения того, как можно определить человека с нормальной функцией. Добавьте эту функцию в элемент скрипта :
        function createNewPerson (name) {
        const obj = {};
        obj.name = имя;
        объектприветствие = функция () {
          alert ('Привет! Я' + имя объекта + '.');
        };
        return obj;
      }
        
    2. Теперь вы можете создать нового человека, вызвав эту функцию - попробуйте следующие строки в консоли JavaScript вашего браузера:
        const salva = createNewPerson ('Salva');
      salva.name;
      salva.greeting ();
        
      Это работает достаточно хорошо, но немного затянуто; если мы знаем, что хотим создать объект, зачем нам явно создавать новый пустой объект и возвращать его? К счастью, JavaScript предоставляет нам удобный ярлык в виде функций-конструкторов - давайте сделаем его сейчас!
    3. Замените предыдущую функцию следующей:
        function Person (имя) {
        это.name = name;
        this.greeting = function () {
          alert ('Привет! Я' + this.name + '.');
        };
      }
        

    Функция-конструктор является версией класса в JavaScript. Обратите внимание, что он имеет все функции, которые вы ожидаете от функции, хотя он ничего не возвращает и не создает явно объект - он в основном просто определяет свойства и методы. Обратите внимание, что здесь также используется ключевое слово this - в основном это означает, что всякий раз, когда создается один из этих экземпляров объекта, свойство name объекта будет равно значению имени, переданному в вызов конструктора, и приветствию () метод также будет использовать значение имени, переданное в вызов конструктора.

    Примечание: Имя функции конструктора обычно начинается с заглавной буквы - это соглашение используется для облегчения распознавания функций конструктора в коде.

    Так как же вызвать конструктор для создания некоторых объектов?

    1. Добавьте следующие строки под предыдущим добавлением кода:
        let person1 = new Person («Боб»);
      let person2 = новый человек ('Сара');
        
    2. Сохраните свой код, перезагрузите его в браузере и попробуйте ввести следующие строки в консоль JS:
        человек1.имя
      person1.greeting ()
      person2.name
      person2.greeting ()
        

    Круто! Теперь вы можете видеть, что у нас есть два новых объекта на странице, каждый из которых хранится в другом пространстве имен - когда вы получаете доступ к их свойствам и методам, вы должны начинать вызовы с person1 или person2 ; функциональность, содержащаяся внутри, аккуратно упакована, поэтому она не будет конфликтовать с другими функциями. Однако у них есть те же свойства name, и welcome () .Обратите внимание, что они используют собственное имя , значение , которое было присвоено им при создании; это одна из причин, по которой очень важно использовать и , поэтому каждый из них использует свое собственное значение, а не какое-либо другое значение.

    Давайте еще раз посмотрим на вызовы конструктора:

      let person1 = new Person («Боб»);
    let person2 = новый человек ('Сара');
      

    В каждом случае ключевое слово new используется, чтобы сообщить браузеру, что мы хотим создать новый экземпляр объекта, за которым следует имя функции с ее обязательными параметрами, содержащимися в круглых скобках, а результат сохраняется в переменной - очень похоже на как называется стандартная функция.Каждый экземпляр создается в соответствии с этим определением:

      function Person (имя) {
      this.name = name;
      this.greeting = function () {
        alert ('Привет! Я' + this.name + '.');
      };
    }
      

    После создания новых объектов переменные person1 и person2 содержат следующие объекты:

      {
      имя: 'Боб',
      приветствие: function () {
        alert ('Привет! Я' + this.name + '.');
      }
    }
    
    {
      имя: 'Сара',
      приветствие: function () {
        alert ('Привет! Я' + это.имя + '.');
      }
    }
      

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

    Создание нашего готового конструктора

    Пример, который мы рассмотрели выше, был всего лишь простым примером для начала. Давайте теперь приступим к созданию нашей последней функции-конструктора Person () .

    1. Удалите код, который вы вставили до сих пор, и добавьте этот конструктор замены - в принципе это точно так же, как и в простом примере, только с немного большей сложностью:
        функция Человек (имя, фамилия, возраст, пол, интересы) {
        это.name = {
           первое: первое,
           последний: последний
        };
        this.age = возраст;
        this.gender = пол;
        this.interests = интересы;
        this.bio = function () {
          alert (this.name.first + '' + this.name.last + '' + this.age + 'лет. Ему нравится' + this.interests [0] + 'и' + this.interests [1] + '.');
        };
        this.greeting = function () {
          alert ('Привет! Я' + this.name.first + '.');
        };
      }
        
    2. Теперь добавьте следующую строку под ним, чтобы создать из него экземпляр объекта:
        let person1 = new Person («Боб», «Смит», 32, «мужчина», [«музыка», «катается на лыжах»]);
        

    Теперь вы можете видеть, что у вас есть доступ к свойствам и методам, как мы делали раньше - попробуйте их в своей консоли JS:

      человек1 ['возраст']
    person1.интересы [1]
    person1.bio ()
    
      

    Дальнейшие упражнения

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

    Кроме того, есть несколько проблем с нашим методом bio () - вывод всегда включает местоимение «Он», даже если ваш человек женский, или какой-либо другой предпочтительный гендерный класс. И биография включает только два интереса, даже если в массиве интересов указано больше.Можете придумать, как исправить это в определении класса (конструкторе)? Вы можете поместить в конструктор любой код, который вам нравится (возможно, вам понадобится несколько условных выражений и цикл). Подумайте о том, как предложения должны быть по-разному структурированы в зависимости от пола и в зависимости от того, составляет ли число перечисленных интересов 1, 2 или более 2.

    До сих пор мы видели два разных способа создания экземпляра объекта - объявление литерала объекта и использование функции-конструктора (см. Выше).

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

    Конструктор Object ()

    Прежде всего, вы можете использовать конструктор Object () для создания нового объекта. Да, даже у универсальных объектов есть конструктор, который генерирует пустой объект.

    1. Попробуйте ввести это в консоль JavaScript вашего браузера:
        let person1 = new Object ();
        
    2. Сохраняет пустой объект в переменной person1 . Затем вы можете добавить свойства и методы к этому объекту, используя точечную или квадратную нотацию по желанию; попробуйте эти примеры на своей консоли:
        человек1.name = 'Крис';
      person1 ['age'] = 38;
      person1.greeting = function () {
        alert ('Привет! Я' + this.name + '.');
      };
        
    3. Вы также можете передать литерал объекта в конструктор Object () в качестве параметра, чтобы предварительно заполнить его свойствами / методами. Попробуйте это в своей консоли JS:
        let person1 = new Object ({
        имя: 'Крис',
        возраст: 38,
        приветствие: function () {
          alert ('Привет! Я' + this.name + '.');
        }
      });
        

    Использование метода create ()

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

    Однако некоторые люди предпочитают создавать экземпляры объектов без предварительного создания конструкторов, особенно если они создают только несколько экземпляров объекта. В JavaScript есть встроенный метод create () , который позволяет вам это делать. С его помощью вы можете создать новый объект, используя существующий объект в качестве прототипа вновь созданного объекта.

    1. Загрузив в браузере завершенное упражнение из предыдущих разделов, попробуйте выполнить это в консоли JavaScript:
        let person2 = Объект.создать (person1);
        
    2. А теперь попробуйте следующее:
        person2.name;
      person2.greeting ();
        

    Вы увидите, что person2 был создан на основе person1 в качестве его прототипа - он имеет те же свойства и доступные ему методы.

    Одно из ограничений create () состоит в том, что IE8 не поддерживает его. Так что конструкторы могут быть более эффективными, если вы хотите поддерживать старые браузеры.

    Мы рассмотрим эффекты create () более подробно позже.

    Вы дошли до конца этой статьи, но можете ли вы вспомнить самую важную информацию? Вы можете найти несколько дополнительных тестов, чтобы убедиться, что вы сохранили эту информацию, прежде чем двигаться дальше - см. Проверка своих навыков: объектно-ориентированный JavaScript.

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

    В этой статье представлен упрощенный взгляд на объектно-ориентированную теорию - это еще не вся история, но она дает вам представление о том, с чем мы здесь имеем дело.Кроме того, мы начали изучать различные способы создания экземпляров объектов.

    В следующей статье мы рассмотрим прототипы объектов JavaScript.

    Концепции объектно-ориентированного программирования (Руководства по Java ™> Изучение языка Java)

    Учебники Java были написаны для JDK 8. Примеры и методы, описанные на этой странице, не используют преимущества улучшений, представленных в более поздних выпусках, и могут использовать технологии, которые больше не доступны.
    См. Сводку обновленных языковых функций в Java SE 9 и последующих выпусках в разделе «Изменения языка Java».
    См. Примечания к выпуску JDK для получения информации о новых функциях, улучшениях и удаленных или устаревших параметрах для всех выпусков JDK.

    Если вы никогда раньше не использовали объектно-ориентированный язык программирования, вам необходимо изучить несколько основных понятий, прежде чем вы сможете начать писать какой-либо код. Этот урок познакомит вас с объектами, классами, наследованием, интерфейсами и пакетами.Каждое обсуждение фокусируется на том, как эти концепции соотносятся с реальным миром, одновременно предоставляя введение в синтаксис языка программирования Java.

    Объект - это программный пакет, связанный с состоянием и поведением. Программные объекты часто используются для моделирования объектов реального мира, которые вы найдете в повседневной жизни. В этом уроке объясняется, как состояние и поведение представлены в объекте, вводится концепция инкапсуляции данных и объясняются преимущества разработки программного обеспечения таким образом.

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

    Inheritance предоставляет мощный и естественный механизм для организации и структурирования вашего программного обеспечения. В этом разделе объясняется, как классы наследуют состояние и поведение от своих суперклассов, и объясняется, как наследовать один класс от другого, используя простой синтаксис, предоставляемый языком программирования Java.

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

    Пакет - это пространство имен для логической организации классов и интерфейсов. Размещение кода в пакетах упрощает управление крупными программными проектами. В этом разделе объясняется, почему это полезно, и знакомится с интерфейсом прикладного программирования (API), предоставляемым платформой Java.

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

    .

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

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