Определение ООП для нового [закрытого] программиста

С новыми Crowd HTML Elements вы можете подключиться к событию submit и выполнить предварительную проверку следующим образом:

document.querySelector('crowd-form').onsubmit = function(e ) {
    if (!validateForm()) {
        e.preventDefault();
    }
}

Спасибо,

Амазонский механический турок

14
задан UnkwnTech 26 August 2013 в 17:27
поделиться

15 ответов

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

самый основной набор словаря для ООП является классом, методом и параметром.

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

метод А просто относится к функции, которая вмонтирована в корпус в классе.

параметр А является переменной, которая передается в функцию, которая сообщает ему, как действовать или дает ему информацию для обработки.

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

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

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

Теперь для простого примера (кто-то мог бы быть в состоянии придумать лучшего, но пойти со мной на нем на данный момент):

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

Для автомобилей, мы захотим записать следующую информацию:

  • Цвет
  • Объем двигателя
  • Тип передачи
  • Количество дверей

Для грузовиков, нам нужно:

  • Цвет
  • Объем двигателя
  • Тип передачи
  • Размер Такси
  • Тяговое усилие

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

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

  • Цвет
  • Объем двигателя
  • Тип передачи

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

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

автомобильный класс будет иметь метод названным numberOfDoors, и класс грузовика будет иметь методы cabSize и towingCapacity.

Хорошо, поэтому давайте предположим, что у нас есть рабочий пример и для процедурного программирования и для программирования OO. Теперь, давайте пробежим несколько сценариев.

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

  • Цвет
  • Объем двигателя
  • Тип передачи
  • Число пассажиров

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

ООП : Мы просто расширяем класс механизма с помощью класса шины и добавляем метод, numberOfPassengers.

Сценарий 2 : Вместо хранения раскрашивают базу данных как, мы ранее сделали по некоторой странной причине, наш клиент хочет цвет, посланный по электронной почте ему.

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

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

Сценарий 3 : Мы хотим переместиться от универсального автомобиля до определенного, делает, например: Ниссан и Mazda.

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

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

Сценарий 4 : Мы нашли ошибку в области типа передачи нашей формы и потребности зафиксировать его.

Процедурный : Мы открываем и обновляем каждую форму.

ООП : Мы исправляем transmissionType метод в классе механизма, и изменение увековечивает в каждом классе, который наследовался ему.

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

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

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

27
ответ дан 1 December 2019 в 05:49
поделиться

Я использую 'возврат balls'example. Предположите, что у Вас есть поле с одним прыгающим мячом в нем.

можно программировать его 2 способами:

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

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

Теперь предполагают, что у Вас есть 100 шаров. Тогда существуют тяжелые шары и легкие шары и взрывающиеся шары. Это основные шары с добавленными характеристиками. Вы все еще использовали бы метод 1?

15
ответ дан 1 December 2019 в 05:49
поделиться

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

12
ответ дан 1 December 2019 в 05:49
поделиться

Не напрасно тратьте время, "определяя" ООП.

Просто используют язык ООП для всех Ваших примеров.

Объекты тривиально очевидны. Реальный мир полон объектов.

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

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

у Человек, которые изучили КОБОЛ или Основной, будут проблемы.

<час>

Части этого зависят от языка. Некоторые языки делают ООП трудно.

, Например, в C++, "класс" является просто определительным. Это не существует как дискретный объект во времени выполнения.

В Java и C++, некоторыми вещами являются объекты, но несколько "примитивных" типов не являются объектами.

Некоторые языки делают ООП легче.

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

6
ответ дан 1 December 2019 в 05:49
поделиться

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

3
ответ дан 1 December 2019 в 05:49
поделиться

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

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

Редактирование: После размышления об этом пример животных намного лучше. См. Объяснять ООП, Не Упоминая Классы и это, ТАК распараллельте о том же предмете.

5
ответ дан 1 December 2019 в 05:49
поделиться

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

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

  1. , Какова Модель и год каждого Механизма?
  2. , Сколько имеют Колеса Механизм?
  3. , Кто Люди, которые управляют данным Механизмом?

В этом случае, у Вас мог бы быть ряд двух Механизмов, таких, что следующее верно:

Vehicle A's Model is a Toyota.
Vehicle A's Year is 2001.
Vehicle A has four Wheels
Vehicle A is driven by Mom, Dad, and Junior

Vehicle B is a Moto Guzzi
Vehicle B was made in 2004
Vehicle B has two wheels
Vehicle B is driven by Dad

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

A = new Vehicle();
A.model = "Toyota";
A.year = 2002;
A.wheelCount = 4;
A.drivers = [ "Mom", "Dad", "Junior" ];

B = new Vehicle();
B.model = "Moto Guzzi";
B.year = 2004;
B.wheelCount = 2;
B.drivers = [ "Dad" ];

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

Далее, можно "разделить на подклассы", который является способом снова использовать объект в различных контекстах. Например, Вы могли использовать более определенные типы объектов Механизма, такие как Автомобиль и Мотоцикл, которые наследовали их функции от описания Механизма:

A = new Car();
B = new Motorcycle();

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

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

4
ответ дан 1 December 2019 в 05:49
поделиться

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

Каждое положение похоже на класс в OO; это определяет ряд обязанностей. Члены команды являются экземплярами тех классов.

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

5
ответ дан 1 December 2019 в 05:49
поделиться

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

  1. Все в Вашей программе - вещь (Объект). Эта вещь имеет свойства, которые объясняют это (размер, форма, цвет, и т.д.)
  2. , программист просит нужно наполнять/отвечать вопросы: Сделайте свой размер большим (setSize) или Что является Вашим размером (getSize)

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

Это препятствует тому, чтобы программист говорил вещь , размер красный . Если Вы непосредственно говорите вещи сделать ее размер красным, что она должна отказаться (красный, не допустимый размер). Additonally, это позволяет вещам управлять побочными эффектами изменения его свойств.

предположим вещь originalSize большой . Если я просто изменение вещь размер к [1 123] маленький , я должен не забыть говорить вещь , что это больше не originalSize. Если я попрошу вещь изменять размер к [1 128] маленький , то это изменит свой размер на маленький И изменит originalSize на ложь. Теперь, когда я спрашиваю вещь, если это будет свой originalSize, то это ответит нет.

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

2
ответ дан 1 December 2019 в 05:49
поделиться

его проще простого записанный назад. 3 основных принципа oo:

полиморфизм наследования инкапсуляции

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

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

1
ответ дан 1 December 2019 в 05:49
поделиться

Вот простое определение.

Gun gun = new Gun(new Bullet);
gun.Aim = Appendage.Foot;
gun.PullTrigger();

;)

2
ответ дан 1 December 2019 в 05:49
поделиться

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

1
ответ дан 1 December 2019 в 05:49
поделиться

Это странно. Вы спрашиваете об обучении ООП людям, которые ничего не знают о ПРОГРАММИРОВАНИИ, и все отвечают, "Как преподавать ООП?"

ответ, Вы не делаете. Как Вы преподаете функциональное программирование кому-то, кто никогда не программировал? Вы не делаете. У Вас есть функции, код переполнен в них, они снова используются, и т.д. В Java, весь Ваш код должен быть в классе. Что такое класс? Это - прежде всего, место для помещения кода. Программы запускаются в Основном методе. Позже, можно инстанцировать его, и каждый класс имеет свои собственные методы и свойства. И затем Вы говорите о статических методах и переменных. И затем когда-то позже Вы говорите о полиморфизме и наследовании. И когда-то там они начинают разрабатывать свои собственные API и сервлеты использования и персистентные классы или независимо от того, что последняя вещь реализовать (snervlets? IHibernate?)

, Но если Вы никогда не видели программирование прежде, нет никакой потребности сесть и иметь большой чат ООП. , Который только необходим, если Вы сохраняете кого-то от программирования не-ООП. Просто преподавайте программирование. Программирование ООП? Действительно ли там кто-либо другой добр? Да, но мы не учим, что сегодня, поэтому давайте не волноваться об этом.

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

-1
ответ дан 1 December 2019 в 05:49
поделиться

Любое объяснение ООП зависит сильно от интерпретации человеком, который объясняет понятия. Моя интерпретация понятия проходит примерно так.

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

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

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

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

1
ответ дан 1 December 2019 в 05:49
поделиться

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

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

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

-1
ответ дан 1 December 2019 в 05:49
поделиться