The Open Closed Principle says that “Software Entities (classes, modules, functions, etc) should be open for extension, but closed for modification”.O
Programs that references an object from a base class must be able to use an object of a derived class without behavior differences and without knowing
High level modules should not depend upon low level modules. Both should depend upon abstractions.Abstractions should not depend upon details.

Class Diagram에는 다양한 요소들이 있음classprotocolpropertiesmethodsrelationships상자는 Class를 의미함open arrowhead는 상속을 의미inherits from 으로 읽기보다,is a 로 읽기Sheep Dog is