Господа!
Давайте сначала определимся с терминологией.
Читаем
http://wikipedia.orgКласс (программирование) — некая сущность, которая задает некоторое общее поведение для объектов.
Класс наряду с понятием «Объект», является важным понятием объектно-ориентированного подхода в программировании (хотя существуют и безклассовые объектно-ориентированные языки, например, JavaScript). Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Таким образом любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает. Класс определяет для объекта контракт, то есть правила, с помощью которых с объектом могут работать другие объекты (обычно это делается с помощью определения методов класса). Кроме того классы могут находиться друг с другом в различных отношениях, таких как Наследование или Агрегация.
Фактически объектно-ориентированное программирование чаще всего сводится к созданию некоторого количества классов, описанию связей между этими классами и их свойств, и дальнейшей реализации полученных классов. Графическое представление некоторого количества классов и связей между ними называется диаграммой классов. Объектно-ориентированный подход за время своего развития накопил множество рекомендаций (паттернов) по созданию классов и иерархий классов.
Подробнее смотри:
http://ru.wikipedia.org/wiki/Класс_(программирование)
Объект наряду с понятием «Класс», является важным понятием объектно-ориентированного подхода в программировании. Под объектом подразумевается некоторая сущность, обладающая состоянием и поведением. Как правило при рассмотрении объектов выделяется, что объект принадлежат одному или нескольким классам, которые в свою очередь определяют поведение объекта. Так же часто у объектов выделяется время жизни, то есть время создания объекта и время его уничтожения.
В большинстве языков Объектно ориентированных языков программирования (таких как Java, C++ или С#), объекты являются экземплярами некоторого заранее описанного класса (однако например в таком языке как JavaScript понятие класс не используется вовсе). Объекты в таких языках создаются с помощью конструктора класса, и уничтожаются либо с помощью деструктора класса (например, в C++), либо автоматически с использованием Garbage collector-а(в Java, C#).
Таким образом, класс - есть некая абстракция, а вовсе не интерфейс, как утверждает уважаемый Kolan.
Класс как таковой не реализуется в динамике программы, реально программист работает с экземпляром класса, т.е. создает объект и работает с ним. Вот объект уже есть нечто "материальное".
С другой стороны объект - это данное, описываемое типом "класс".
Уважаемый bas, естественно ER частный случай ДК, состоящей из из классов-сущностей и не включающая граничные и упраляющие классы. А вот наличие последних и отличает ДК от ER.
Насчет зависимости думаю никто из вас не прав.
a dependency in computer science is a state in which one object uses a functionality of another object. This may cause changes on implementation of one object that can affect implementation of another object.
К сожалению нет русской статьи остается читать только английскую
http://en.wikipedia.org/wiki/Coupling_(computer_science)
очень примечательно.
Думаю зависимость - есть некоторое отношение между классами или объектами возникающие при определенных условиях, но все равно практическую сторону не очень понимаю - прошу привести примеры.
Нет ли такой мысли, что зависимость проявляется между объектами и пакетами, но не между классами?
Про последнее. Можно понимать так, что если некое свойства класса А, есть класс В, то между классом А и классом В есть устойчивая связь - читай ассоциация - а какая тут множественность, кардинальность и т.п.?