Почему я должен использовать классы, а не просто набор функций? [дубликат]

8
задан Community 23 May 2017 в 11:52
поделиться

6 ответов

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

4
ответ дан 5 December 2019 в 15:22
поделиться

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

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

Также нельзя использовать полиморфизм в конструкции кода, поэтому нельзя работать с абстракциями.

-121--3653362-

классы/объект - это способ реализации объектно-ориентированного проектирования приложения. он подробно освещался в многочисленных книгах OOAD/OOP.

0
ответ дан 5 December 2019 в 15:22
поделиться

Три столпа объектно-ориентированного программирования. Выучите их хорошо:

http://codeidol.com/csharp/learncsharp2/Object-Oriented-Programming/The-Three-Pillars-of-Object-Oriented-Programming/

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

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

Специализация

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

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

Полиморфизм

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

См. Также:

http://en.wikipedia.org/ wiki / Полиморфизм_в_объектно-ориентированном_программировании

http://en.wikipedia.org/wiki/Type_polymorphism

5
ответ дан 5 December 2019 в 15:22
поделиться

По сути, классы позволяют вам помещать данные в код - т.е. организация.

Кроме того, классы позволяют вашим «последователям» настраивать ваши классы, не переписывая код, а скорее создавая новые унаследованные классы.

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

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

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

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

Банальный пример: представьте, что у вас есть какая-то библиотека, чтобы проверить, что некоторые вещи не перекрываются.

class Comparator:
  def Greater(self, left, right): pass
  def Less(self, left, right): pass

def EnforceNoOverlap(self, comparator, left, right)
  assert comparator.Greater(left, right) != comparator.Lesser(left, right)
1
ответ дан 5 December 2019 в 15:22
поделиться

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

Кроме того, классы позволяют вашим «последователям» настраивать ваши классы, не переписывая код, а создавая новые унаследованные классы.

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

-121--3653360-

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

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

Также нельзя использовать полиморфизм в конструкции кода, поэтому нельзя работать с абстракциями.

0
ответ дан 5 December 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: