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

1

У меня есть друг, который борется за изучение программирования OO (в классе Computer Science), в основном, я полагаю, из-за того, что он не понимает относительность/разницу между "типом" и фактическим "экземпляром". Похоже, что проблема заключается в понимании того, как хранятся данные.

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

Как этот пост-шоу, я ужасно объясняю эту концепцию, даже когда знаю, что я объясняю ее людям.

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


Больше информации:

Вот такая путаница, которую он испытывает. Мы работаем над переопределением объекта Critter в GridWorld (ужасно разработанная объект теста AP). В любом случае мы должны переопределить некоторые методы.

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

Разница между "Integer nameHere" и "nameHere Integer" смущает, я думаю, ему. Он может попытаться сделать Integer.equals(), когда он должен сделать имяHere.equals(). Я показываю ему API, но я думаю, что это просто путают.

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

public getSomething()
{
    return something;
}

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

Как я могу заставить его перестать думать "глобально" и начать думать "родственник"? Как вы объясните "родственник"?

Теги:
object
pointers
oop
variables

2 ответа

4
Лучший ответ

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

Но он также имеет локально определенный объем, потому что это один из примеров класса телевизоров в мире. Если вы вводите канал 32 на телевизоре в Нью-Йорке, вы получите одно. Если вы сделаете это в Бангалоре, вы получите что-то еще. Ввод канала - это вызов setChannel(int channel) TV setChannel(int channel).

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

0

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню