[객체 지향 프로그래밍 입문] 객체 (1)

sameul__choi·2022년 1월 18일
0

절차 지향 vs 객체 지향 : 절차 지향

절차지향 데이터를 여러 프로시저가 공유하는 방식
처음 코딩을 배우면 절차 지향을 배우게 된다

변수, 필드 선언, 그 변수나 필드를 조작하는 방식 -> 난이도가 쉽다

하지만, 데이터를 공유하는 방식은 시간이 흘러갈수록 구조를 점점 복잡하게 만들 수 있다.
-> 수정을 어렵게 만드는 요인이 된다.

절차지향과 비용

  • 요구사항은 시간이 흘러가면서 변경될 수 있다. 상태 뿐 아니라 차단 횟수가 0보다 클 경우에도 체크를 해달라는 요구사항이 들어오면 왼쪽의 코드가 오른쪽으로 변경이 된다.

  • 요구사항이 바뀌면서 데이터를 사용하는 방식이나 필요한 데이터가 바뀌게 된다.

  • 요구사항이 계속적으로 바뀌게 된다면 ?
    - 이렇게 데이터를 사용하는 곳이 한 두군데가 아니다. (어딘가에 분명 존재 할 것)
    • 조건이 많아지면서 복잡해지고 있는데, 모든 곳에 가서 수정을 해주어야 하는 문제가 발생한다.
  • 처음에는 빨리 만드는 것 같아서 쉬운데, 코드가 복잡해지고 수정이 어려워지는 문제가 발생하게 된다.

절차 지향 vs 객체 지향 : 객체 지향

객체지향은 데이터와 프로시저를 객체단위로 묶는다.
특정 객체가 가지고 있는 데이터는 그 객체의 프로시저만 접근할 수 있게 한다.
그래서 다른 객체에서는 그 객체의 데이터에 바로 접근할 수 없다.

이 객체는 프로시저를 이용하여 외부에 기능을 제공한다.
객체와 객체는 프로시저를 호출하는 방식으로 서로 연결이 된다.

처음에는 이 방식이 어려울 수도 있다.
- 데이터와 프로시저를 알맞게 객체에 묶어야 하기 때문에
- 하지만 시간이 흘러갈수록 코드 수정이 용이해지는 장점이 있다.

객체란 ?

  • 객체의 핵심 -> 기능 제공
    - 객체는 제공하는 기능으로 정의 (내부적으로 가진 필드(데이터)로 정의하지 않는다)
  • 예 : 회원 객체
    - 암호 변경하기 기능
    • 차단 여부 확인하기 기능
  • 예 : 소리 제어기
    - 소리 크기 증가하기 기능
    • 소리 크기 감소하기 기능

기능 명세

  • 메서드(operation)를 이용해서 기능 명세
    - 이름, 파라미터, 결과로 구성
    public class VolumeController {
    	public void increase(int inc)
     	...
    }
    
    public int volume(){
    	...
    }
    		```

객체와 객체

  • 객체와 객체는 기능을 사용해서 연결
    - 기능 사용 = 메서드 호출
     VolumnController volCont = new VolumeController();
     volCont.increase(4);
     volCont.increase(3);
     int currentVol = volCont.volume();

용어 : 메세지

  • 객체와 객체 상호 작용 : 메세지를 주고 받는다고 표현
    - 메서드를 호출하는 메세지, 리턴하는 메세지, 익셉션 메세지
    UML 시퀀스 다이어그램
  • 객체와 객체간의 화살표들을 메세지라고 표현한다.

객체 ?

이런 class는 구조체에 가깝다. 데이터 클래스라고도 표현하고, 이런 class에 기능이 붙어야 객체라고 부를 수 있다.

- 객체는 기능으로 정의를 한다.

0개의 댓글