일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- sequelize
- react
- javascript animation
- npx
- 웹크롤링
- socket.io
- 회고
- CDN
- 포트포워딩
- 성능최적화
- cicd
- AWS
- Recoil
- component
- 웹팩
- Modal
- docker
- route
- express
- typescript
- scrapping
- go
- Redux
- graphql
- 반응형웹
- 정규표현식
- styled-component
- Today
- Total
프로그래밍 공부하기
객체 지향 프로그래밍(Object Oriented Programming) 본문
프로그래밍이란 우리가 해결하고 싶은 문제 혹은 알고리즘을 프로그래밍 언어를 사용하여 구현하고 이를 컴퓨터에게 위임하여 자동화하는 것이다. 프로그래밍에서 문제 해결을 위해 필요한 절차를 구현하는 방법 중 대표적인 것이 객체지향 프로그래밍이다.
1. 객체지향 프로그래밍이란
1) 절차지향 프로그래밍
C, Pascal, BASIC 등 비교적 과거의 하이 레벨 프로그래밍 언어는 절차적 프로그래밍을 수행했다. 어떤 문제를 해결하기위해 일을 순서대로 처리하는 것이다. 즉, 어떠한 논리를 순서대로 써내려가는 것이다. 절차지향프로그래밍은 복잡한 논리를 가진 문제를 만났을 때 구현과 유지보수가 어려워지는 문제점이 있다. 후에 절차적 프로그래밍의 하위개념인 구조적 프로그래밍이란 개념이 등장하면서 프로그램 전체를 독립적인 단위라 보지 않고 작은 단위(함수)들로 나누어 일을 처리하는 방법으로 어느정도 해결이 되었으나 문제를 완전히 해결할 수는 없었다.
절차지향에서 은행의 고객이 ATM기에서 출금을 하는 과정은 다음과 같이 위에서 아래로의 논리적 흐름으로 구현이 된다.
2) 객체지향 프로그래밍
절차지향의 문제점을 해결하기 위해 탄생한 것이 객체지향 프로그래밍이다. 객체지향에서는 데이터와 절차를 하나의 덩어리로 묶어서 생각한다. 즉, 프로그래밍의 중심을 절차가 아닌 객체라는 단위로 보고 객체들을 조합하여 문제를 해결해나가는 것이다.
객체란 어떠한 물건, 개념, 대상 등 각각에 대해 구별할 수 있는 단위를 의미한다. 고객, ATM기기, 계좌, 버튼, 과목, 감정 등 개념상으로 존재하는 모든 것이 객체가 될 수 있다. 객체지향에서는 객체들을 자신만의 속성(데이터)과 동작(메소드)을 갖도록 하고, 포함관계(ISA, ex. 개는 동물이다)를 갖는 객체들은 상위 객체로부터 속성과 동작을 물려받게 하는 등 데이터를 구조화하였다. 따라서 객체지향프로그래밍에서의 모든 처리는 객체에 대한 요구로 표현되며 요구를 받은 객체는 자기 자신 내에 기술되어있는 처리를 실행한다. 이러한 객체지향은 절차지향에 비해 단순하고 신뢰성이 높은 프로그램을 구현할 수 있다.
객체지향에서 은행의 고객이 ATM기에서 출금을 하는 과정은 다음과 같이 고객 객체와 ATM 객체 간의 상호작용으로 구현이 된다.
2. 객체와 클래스
객체지향에서 객체와 함께 사용되는 개념이 클래스이다. 클래스는 어떤 종류의 객체들이 공통으로 갖고있는 속성을 모아 틀을 만든 것이다. 이러한 클래스라는 틀을 통해 객체가 만들어 진다. 예를 들어 붕어빵을 만들어야 한다고 생각해보자. 붕어빵을 만들기 전에 붕어빵들의 공통 속성에 따라 틀을 만들어야 할 것이다. 내가 만들 붕어빵은 종류에 상관없이 길이가 15cm이고 너비는 8cm이며, 붕어모양을 갖고있다. 또한 밀가루 안에 소라는 것을 갖고있다. 이러한 데이터는 붕어빵 틀 즉, 클래스가 된다. 틀을 만들었으니 이제 진짜 붕어빵을 만들 차례이다. 붕어빵 틀에 팥을 넣으면 팥 붕어빵, 슈크림을 넣으면 슈크림 붕어빵이 된다. 즉 클래스(붕어빵틀)를 이용하여 객체(팥 붕어빵)을 만든 것이다. 이러한 과정을 코드로 나타내면 다음과 같다.
class 붕어빵{ //붕어빵틀 만들기
길이 = 15;
너비 = 8;
모양 = '붕어';
constructor(소){
this.소 = 소;
}
}
//진짜 붕어빵 만들기
let pat = new 붕어빵('팥'); //붕어빵 {길이: 15, 너비: 8, 모양: "붕어", 소: "팥"}
let chouxcream = new 붕어빵('슈크림'); //붕어빵 {길이: 15, 너비: 8, 모양: "붕어", 소: "슈크림"}
나머지 내용은 다음 포스팅으로 이어집니다.
2021/01/14 - [Javascript/Basic JS] - 객체지향프로그래밍의 특징
참고 사이트
'Web > [JS] Common' 카테고리의 다른 글
프로토타입 (0) | 2021.01.14 |
---|---|
객체지향프로그래밍의 특징 (0) | 2021.01.14 |
함수 내의 this 지정: call, apply, bind (0) | 2021.01.13 |
화살표 함수 (0) | 2021.01.12 |
undefined와 null (0) | 2021.01.08 |