2008-09-27 2 views
2

В целом, я думаю, что я вполне могу передать большинство программных понятий.
Тем не менее, мне все же сложно суммировать отношения между полями, классами и пакетами.Обучение: Field, Class & Package Relationships


Как вы суммируете «Поля», «Классы» и «Пакеты» и «Их отношения»?

ответ

2

Я столкнулся с аналогичной проблемой, так как я преподавал C, C++ и Java. Вот что я делаю:

Во-первых, я держу пакеты отдельно и объясняю их в конце.

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

Затем вы переходите к классам, методам и полям и показываете, что по существу (запрет наследования и некоторые анекдоты) они во многом являются синтаксическим сахаром для ADT.

Если вам нужно, вы можете научить макеты объектов, наследование и виртуальные таблицы (по моему опыту он помогает ученикам лучше понять наследование, чтобы увидеть макет памяти).

Наконец, вы узнаете, как организовать занятия вместе. Если вы преподаете C++, у вас действительно нет пакетов, но вы можете объяснить пространства имен и обсудить организацию и отдельную компиляцию.

Если вы находитесь на Java, то вы просто объясните, что это коллекции классов в том же пространстве имен, которые имеют специальные правила доступа и показывают их. Система пакетов в Java в любом случае является сломанной, поэтому я обычно просматриваю шаблоны (например, отделяя пакет UI от C).

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

1

Как я описать это:

  • Объектов коллекция слотов, слоты, проведение данных являются полями, слоты, проведение кода метода. Открытые слоты находятся снаружи объекта, частные слоты находятся внутри. Методы должны быть в основном публичными, потому что объект предлагает услуги клиентам, поля должны быть частными, поэтому клиенты не знают, как работают службы. Поля являются, таким образом, деталью реализации объектов.
  • Имена классов должны быть уникальными, чтобы вы могли комбинировать свой код с сторонними библиотеками. Имена простых/коротких классов недостаточны, так как, вероятно, тысячи классов называются «List», «Customer» и т. Д. Поэтому классы помещаются в пакеты для создания более длинных и сложных дубликатов имен. Только подмножество классов в пакете должно быть видимым для клиентов, следовательно, два уровня доступа для общественности и по умолчанию. Это позволяет пакету функционировать как библиотека.

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

1

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

1

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

Классы - это шаблоны для пользовательских типов данных. Классы более продвинутые, чем примитивные типы данных, поскольку они имеют как состояние, так и поведение.

Пакеты используются для группировки классов и разрешения возможных конфликтов имен. С несколькими разработчиками и общедоступными библиотеками кодов очень вероятно, что некоторые из нас будут называть наши классы одинаковыми (Math, LinkedList, FileUtils и т. Д.). Наличие уникального имени пакета, префиксного имени класса, позволяет компилятору (и другим разработчикам) определять, какой класс вы собираетесь использовать.

1

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

Вот что я использую.

Объекты - это вещи. У них есть атрибуты (измерения, состояния бытия и т. Д.). Атрибуты можно назвать полями. [Я часто использую то, что я нахожу в классе - чашки, маркеры, шляпы, пальто и т. Д., Чтобы проиллюстрировать это.]

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

Функции (атрибуты и операции, поля и методы, любые) объекта предоставляют способ классификации объектов.

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

Пакет представляет собой набор определений классов. Хотя - в идеале - классы в пакете имеют что-то общее, это не требование и не является полезным различием.