Как лучше всего определить слова «класс» и «объект» для того, кто их не использовал? - PullRequest
22 голосов
/ 10 сентября 2010

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

То, что я на самом деле не тривиален, чтобы объяснить, это "что, черт возьми, класс?"


Лучшее, что у меня есть:

  • A переменная содержит некоторые данные; одна переменная может быть именем, другая переменная может быть вашим весом в фунтах.

  • A метод - это функция, она делает вещи и может делать вещи с этими переменными. Метод может отображать ваше имя на экране или сообщать вам, какой вес вы должны потерять, чтобы иметь хорошее соотношение ИМТ.

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

  • A class является своего рода планом или шаблоном, который описывает методы и переменные, которые будут в каждом объекте. Объект является экземпляром (экземпляром) класса; объект - это что-то, а класс - это просто планы сделать что-то.

Продолжая пример, у нас есть объект Person, который создается для хранения данных Алисы, и другой объект Person для хранения данных Боба, а другой - для Кэрол и т. Д.


Как мне настроить этот пример, чтобы придать ему больше смысла, и / или какой подход лучше? Слово «созданный» кажется слишком тяжелым на данный момент.

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

Ответы [ 29 ]

0 голосов
/ 17 августа 2015

Детали вашего вопроса имеют довольно хорошие определения всех терминов. Вот аналогия, которая мне показалась довольно полезной - я перечислил ее в виде нисходящего подхода:

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

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

И, наконец, есть некоторые функции , которые необходимо выполнить для всех сотрудников - скажем, onBoarding () или CalculateSalary ()

0 голосов
/ 28 декабря 2014

Я могу сказать на примере: Животное, Человек, машина и т. Д. Здесь Животное, Человек, автомобиль рассматривается как Класс, теперь рассмотрим Собаку: Здесь Собака рассматривается как Объект, который находится в классе Животных. Если мы рассмотрим собаку, то ее состояние - имя, порода, окрас и поведение - лай, еда, бег, сон. Теперь мы можем сказать, что класс - это чертеж класса Animal, из которого создается отдельный объект. Здесь barking (), running (), eat (), Sleeping () и т. Д. Являются методом конкретного объекта Dog. Я думаю, что будет немного легче понять разницу между классом и объектом.

0 голосов
/ 29 марта 2014

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

0 голосов
/ 08 декабря 2013

класс: пользовательский тип переменной

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

0 голосов
/ 10 сентября 2010

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

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

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

0 голосов
/ 10 сентября 2010

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

0 голосов
/ 10 сентября 2010

Объект является экземпляром класса. Переменная является экземпляром типа

. При этом класс может быть чем-то вроде «типа на стероидах»: он может иметь: переменные, которые могут быть любого типа илиобъекты из других методов класса, которые могут работать с переменными класса точно так же, как методы разных типов (например, +(bool,bool)) могут иметь доступ к переменным класса, и все это определяется вами!

Выможете использовать классы для моделирования задачи оптимальным способом.Но иногда есть другие способы сделать это;) (не только ООП)

0 голосов
/ 10 сентября 2010

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

0 голосов
/ 10 сентября 2010

Вы можете найти этот разговор Гая Л. Стила интересным: http://video.google.com/videoplay?docid=-8860158196198824415#

...