-
객체 지향 프로그래밍?Today I Learned 2020. 10. 4. 23:28
1. 객체
: 속성과 행동으로 이루어진 모든 것
- 자동차 : 브랜드, 색깔, 가격 등의 속성, 시동이 걸리는 것, 전/후진하는 것 등의 행동을 가진 객체라 할 수 있음
- SNS 유저 객체 : 이메일 주소, 비밀번호, 친구 목록 등의 속성, 좋아요 누르기, 친구 추가하기 등의 행동을 가진 객체라 할 수 있음
2. 객체 지향 프로그래밍
: 프로그램을 여러 개의 독립된 객체들과 그 객체들 간의 상호작용으로 파악하는 프로그래밍 접근법
- 프로그램을 객체들과 객체들 간의 소통으로 바라보는 것
3. 객체 지향 프로그래밍의 4가지 특징
- 캡슐화(encapsulation) : 변수와 함수를 하나의 함수로 묶는 것을 말한다. 사용자에게는 사용법만 알려주고 내부가 어떻게 되있는지는 숨길 수 있다. 이런 컨셉을 정보의 은닉화 또는 캡슐화라고 부른다
- 상속(inheritance) : 자식(sub) 클래스가 부모(super) 클래스의 기능을 받아서 쓰는 것. 어떤 객체의 필드(변수)와 메소드를 다른 객체가 물려받을 수 있는 기능을 말한다
- 추상화(abstraction) : 공통의 속성이나 기능을 묶어 이름을 붙이는 것으로, 불필요한 정보는 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 간단한 구조, 즉 클래스를 만드는 일련의 과정을 말한다
- 다형성(polymorphism) : 부모 클래스로부터 상속을 받아 똑같은 기능이지만 다른 내용을 추가함으로써 차별점을 둘 수 있는 특성
4. 장점
- 코드의 복잡도를 줄여준다, 코드의 재활용성을 높여준다
- 유지보수가 쉬움
- 대형 프로젝트에 적합
- 디버깅이 쉽다
5. 단점
- 설계에 많은 시간 소요
- 처리속도가 절차 지향 프로그래밍에 비해 느리다
- 객체가 많아지면 프로그램의 용량이 커질 수 있다
6. 객체 지향 프로그래밍을 하려면
1) 프로그램에 어떤 객체들이 필요할지 정한다
2) 객체들의 속성과 행동을 정한다
3) 객체들이 서로 어떻게 소통할지 정한다
7. 총 게임의 예시
1) 프로그램에 어떤 객체들이 필요할지 정한다
- 게임 캐릭터
- 총
- 총알
2) 객체들의 속성과 행동을 정한다
- 게임 캐릭터 - 속성: ID, 체력, 사용 중인 총 / 행동 : 총쏘기, 달리기, 체력이 0 이하가 되면 죽는다
- 총 - 속성 : 모델명, 무게, 장전된 총알 개수 / 행동 : 총알 발사
- 총알 - 속성 : 공격력 / 행동 : 총알을 맞은 캐릭터의 체력을 공격력만큼 깎는다
3) 객체들이 서로 어떻게 소통할지 정한다
- 게임 캐릭터 객체가 총 객체에게 발사하라고 신호를 보낸다
- 총 객체는 장전된 총알 중 하나를 발사한다
- 자신의 속성 중 장전된 총알 개수에서 1을 뺀다
- 총알이 발사된다
- 총알이 다른 캐릭터에게 닿으면, 체력을 깎도록 신호를 보내야 한다.
- 캐릭터 객체는 닿은 총알의 공격력만큼 체력을 깎는다
- 만약 체력이 0 이하라면 죽는다
[ 참고자료 ]
'Today I Learned' 카테고리의 다른 글
리액트에서 여러 input 태그 다루기 (0) 2020.10.14 html문서에서 script태그의 위치와 속성 (0) 2020.10.06 express.Router (0) 2020.08.01 데이터베이스, MySQL (1) 2020.07.31 React를 통해 Personal Portfolio 만들기 - 스프린트 일지 (0) 2020.07.21