컴퓨터공학

객체 지향 프로그래밍 (OOP) 개념과 특성

코딩고블린 2020. 5. 8. 12:01

이미지 출처 : https://www.reddit.com/r/ProgrammerHumor/comments/418x95/theory_vs_reality/

 

객체 지향 (OOP) 이란?

객체 중심의 프로그래밍 패러다임 이다.

 

기존, 절차지향이 위에서부터 아래로 순서대로 읽어들이면서 차례대로 명령어가 수행되었다면,

객체지향의 경우 객체라고 불리우는 요소(집합) 의 구성으로 명령어를 수행 할 수 있다.

각 객체간의 관계를 통해 코드 호출, 수행순서를 유기적으로 조정 할 수 있어서 코드의 간결함, 신뢰성, *재사용에 큰 장점을 가지고 있다.

 

무엇이 객체인가?

현실세계에 존재하는 모든 것(thing)이 객체가 될 수 있다. 사람, 몬스터 등 실제로 눈에 보이는 형상도 객체로 만들 수 있고,

음식 주문 프로세스, 병원 진료받기 등의 관념이나 행동도 객체가 될 수 있다.

실 세계에 존재하는 것들을 프로그래밍 적으로 구현하기 위해 객체들의 공통적인 특성과 속성을 파악하고 객체로 만드는 과정을 *추상화 라고 한다.

 

객체 지향의 대표적인 특징

1. 상속성

상위 부모 객체의 속성과 특징을 하위 객체가 물려 받는 것이다, 

만약 어떠한 객체가 이미 존재하는 객체의 특성을 가지고 있다면, 기존 객체의 특성을 상속시켜 만들 수 있다.

 

Class Button {
	Private int BackgroundColor;
	Private int BorderRadius;
}

Class ImageButton() extends Button {
	//내용
}

예를들어, class Button backgroundColor, BorderRadius 라는 속성을 가지고 있다면,

새로 만들고자 하는 ImageButton, SmallButton 객체에게 해당 특징을 상속하여 만들 수 있다.

 

 

2.은닉성

외부에 노출되면 부적절한 크리티컬한 기능이나 보안이필요한 요소들을 외부에서 조작할 수 없도록 캡슐화 하는것.

변수명이나 메서드 이름 앞에 접근 한정자를 지정. (관례적으로)

  • Private : 해당 클래스(객체) 범위 안에서 접근 가능

  • Public : 모든 곳에서 접근 가능

  • Protected : 상속받는 자식에 한해서 접근 가능

Javascript 에서는?
this 를 통해 전역 객체의 value,  해당 객체를 호출한 상위 매서드의 value, 혹은 파라매터로 넘겨진 value에 접근 할 수 있다.

 

Getter, Setter

Class Player {
	Private int hp = 150;
	Public void SetHp(int hp){
		this.hp = hp;
	}
}

Player player = new Player();
player.SetHp(200);

만약, 클래스 내부 private 속성에 접근할 수 있도록 만드려면, Getter Setter 를 통해 조작할 수 있도록 하는 것 신뢰성 유지와 가독성에 유리하다.

중단점 등을 활용하여 언제 어디에서 해당 속성을 조작하였는지 명확하게 알기 쉬워진다.

 

 

3.다형성

다형성은 같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질이다.

객체가 지니고 있는 함수를 다른 스코프에서 재정의 하여 덮어 씌울 수 있다.