CS

Software Engineering(1) - Object

리하이 2022. 7. 21. 22:10

Object 란?

간단한 의미로, object는 개체 (entity)를 뜻한다.

SW적으로 다가가면, 1) unique한 id 를 가지고 있고, 2) 특정한 boundary를 가지고 있으며, 3) 상태 (state, attribute) 에 대한 정보와 4) 행위(behavior, operation) 를 가지고 있는 것이다.

 

object는 주로 원으로 표현된다.

원이라는 특정한 바운더리 안에, 행위와 상태가 표현된다.

주로, 해당 object에 접근하는 사람(client)는 state를 직접적으로 접근하기보다, behavior를 통해 접근한다.

그럼, object의 2개의 구성요소인 상태(status)와 행위(behavior)에 대해 자세히 알아보자.

1) Status

status는 information, attribute 등으로 불리며 간단하게는 object의 정보이다.

위의 예시에서, 자전거에 대한 기어상태정보, 속도정보등이 해당된다.

주로 status는 숨겨져서(encapsulate) 직접 접근은 불가능하다.

 

2) Behavior

Behavior는 우리가 보통 알고 있는 method 이다.  object가 행동하고, 반응하는 것들을 결정한다.

1)status의 값을 바꾸거나, 값을 얻으려면 behavior를 통해야한다.

특히, object간의 커뮤니케이션도 behavior를 통해 진행된다. (주로 getter,setter 함수를 사용)

 

*참고)

OOD 프로그래밍이란, object를 중심으로 프로그래밍을 한다는 것이다. 즉, 어떤 정보를 얻고싶다고 가정한다면, 직접 얻는게 아니라 object의 behavior(method)를 통해 얻는다.

그림에서 네모가 object. 전부 behavior를 통해 input(main)을 수행하고, object끼리도 behavior를 통해 소통하는것을 확인할 수 있다.

sequence diagram

 

Class 란?

갑자기 class? 머야 하겠지만, object와 class는 매우 큰 연관을 가지고 있다.

class란, object를 만드는 틀(template)이다. (프로그램에서 new A 할때, A가 클래스고 이렇게 만들어진 인스턴스가 object)

class는 object의 틀이기 때문에 당연히도 State와 Behavior를 가지고 있다. 주로 class에 대해서는 Attribute(State), Operations(behavior)라는 이름을 사용한다.

 

한번 더 정리하자.

1) Attribute

동일하게 attribute는 class의 요소들이다.

2) Operation

class를 구현하는 모든 것을 의미한다.

 

*참고)

class diagram예습. 

class는 동일한 operation, 다른 value의 attribute를 가지고 있다. 따라서, class diagram을 그릴땐, attribute만 그린다.

 

class diagram

3)Message (communication of object)

아까 언급한대로, object끼리 소통을 해야할 경우가 있다. (한 object가 모든 정보를 가지고 있지 않기 때문이다.)

이럴땐. Operation을 통해서 서로 소통한다.

 

그래서 오늘 마무리는..

 

 

reference)

http://www.cs.toronto.edu/~penny/teaching/csc407-03s/eg/ood/uml/index.html

 

Collected UML

 

www.cs.toronto.edu

https://docs.oracle.com/javase/tutorial/java/concepts/object.html

 

What Is an Object? (The Java™ Tutorials > Learning the Java Language > Object-Oriented Programming Concept

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated

docs.oracle.com

http://dslab.konkuk.ac.kr/class/2018/18SMA/Lecture%20Note/Intro_OOD.pdf