Подтвердить что ты не робот

В чем разница между пространством имен, классом, объектом и экземпляром?

Я читаю Heads First С# (это очень интересно и удобно), но я задавался вопросом, есть ли у кого-нибудь полезная метафора для описания того, как пространства имен, классы, методы, свойства и т.д. все "сочетаются"?

Является ли класс родителем и методом дочерним и т.д. Или это сложнее?

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

... Я получу свое пальто.

4b9b3361

Ответ 1

Я бы сказал:

  • Пространство имен: категория или марка автомобилей. Обратите внимание, что бренду действительно не нужно диктовать, как построен автомобиль. Вы не можете сказать, что у Хонды всегда есть четыре двери, или что у нее всегда есть 4wd. Такая специфика зависит от класса, который диктует. Сообщение Rich.Carpenter очень хорошо объясняет цель пространств имен.

  • Класс: план создания конкретного автомобиля.

  • Объект: фактический автомобиль (экземпляр), созданный из чертежа автомобиля (класс)

  • Метод. Что-то, что пользователь автомобиля может сделать. Start(), IncreaseThrottle(), Brake(), OpenDoor() и т.д.

  • Свойство: атрибуты, информация и строительные блоки, которые содержит автомобиль. Например. Общие пробеги, цвет, размер рулевого колеса, стереосистема и т.д. И т.д.

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

  • Наследование. Когда класс основан на другом классе и добавляет некоторые более конкретные детали. Линия наследования обычно идет от самого общего и общего аспекта, вплоть до точки, в которой нет смысла более конкретным. Пример этого в контексте животных: Animal- > Mamal- > Rodent- > Rat- > RattusNorvegicus

  • Агрегаты. Свойства, которые "строят" объект. Например. "Этот автомобиль представляет собой совокупность четырех колес, шасси, двигателя и т.д.".

  • Атрибут: свойства, описывающие объект, обычно не являющиеся частью его физической конструкции. Например. Цвет, максимальная скорость, объем двигателя и т.д.

  • Инкапсуляция. Концепция скрытия определенных свойств от пользователя или для защиты определенных свойств от неправильного использования (и тем самым повреждения объекта). Например. Вы не можете свободно менять экипировку автомобиля класса автомобиля. Вы инкапсулируете его и убедитесь, что Clutch() вызывается до SetGear().

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

  • Полиморфизм: сложное понятие, которое нужно понять, пока вы не начнете его использовать практически. Это означает обращение к очень специфическому виду объекта, используя общую ссылку, которая позволяет игнорировать определенный тип (когда вам не нужно это знать). Например. Если вы хотите "прочитать" номер номера номерного знака каждого автомобиля на стоянке, вам все равно, что такое бренд, или даже если это трейлер или мотоцикл или что-то еще. Чтобы это сделать, мы удостоверяемся, что номер номерной доски является свойством в самом общем классе в строке наследования (возможно, в классе Vehicle). Поэтому вам нужно иметь дело со всеми объектами в списке, ссылаясь на них как на их класс Vehicle, а затем называть Vehicle::GetLicensePlateNumber(). Любое транспортное средство, требующее некоторой специальной обработки для извлечения номера, может реализовать это поведение, переопределив метод и сделав его соответствующим образом. Таким образом, можно использовать широкий диапазон типов объектов, как если бы они были одного типа, но могут вести себя по-разному.

Ответ 2

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

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

Теперь я работаю в Тойоте (не совсем, но медведь со мной). Toyota будет пространством имен, которое включает мой чертеж автомобиля. Поскольку Ford, GM и т.д. Могут иметь свои собственные модели автомобилей (классы), а также с теми же названиями (автомобиль) и методами (honk), пространства имен Toyota, Ford и GM сохраняют эти чертежи (классы) отдельными и как вы можете иметь несколько версий классов и методов с тем же именем в приложении, когда у них разные пространства имен.

Надеюсь, что это поможет.

Ответ 3

в одном предложении:

a Объект - это экземпляр класса

Ответ 4

Используя аналогию для чертежей дома.

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

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

Вы можете вызвать каждый из этих домов в домах из определенного плана.

Итак, поскольку @yx так красноречиво сказал, что объект является экземпляром класса.

Ответ 5

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

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

Классы могут быть своего рода животным, например Cat и Dog. Когда вы создаете экземпляр класса, он становится конкретным объектом, например, Fido dog.

Пространства имен используются для логического группирования классов, поэтому классы Cat и Dog могут быть помещены в пространство имен Animals.Pets. Хотя пространства имен являются иерархическими, это не делает иерархические классы в них. Это просто разные группы, поэтому классы в пространстве имен Animals не являются автоматически родителями классов в пространстве имен Animals.Pets.

Методы - это то, что делают объекты, например Eat() и Sleep().

Свойства - это то, что описывает аспект объекта, например NumberOfLegs и IsSleeping.

Ответ 6

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

Эти коллекции рабочих мест будут находиться в отделе. Финансы имеет свои рабочие места/классы (бухгалтеры, бухгалтеры..), но им нужно будет работать с Sales, у которых есть свои типы рабочих мест/классов.

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

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

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

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

Ответ 7

Объект может быть экземпляром класса?

Ответ 8

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

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

Ответ 9

Класс - это тип объекта. Например, вы можете иметь столько объектов одного класса, сколько хотите.

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

Ответ 10

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

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