티스토리 뷰

CS

OOP-객체 지향 프로그래밍의 이해

Basic Developer 2022. 9. 8. 00:14

이번 포스트는 OOP에 대해 알아보고자 합니다.

OOP : Object Oriented Programming : 객체지향 프로그래밍

 

객체지향 프로그래밍이란?

간단하게 말해서, 프로그램을 작은 조각들로 설계하여 결과물을 만들어내는 프로그래밍 방법론

 

객체지향 프로그래밍이 나오게 된 이유?

프로그래밍 기법은 

순차적 프로그래밍 -> 절차적 프로그래밍 ->  객체지향 프로그래밍 순으로 발전했다.

순차적 프로그래밍의 단점을 보안 -> 절차적 프로그래밍 단점을 보안 -> 객체지향 프로그래밍으로 생각하면 되겠다.

많은 사람들이 오해하고 있는 것이 절차적 프로그래밍이 객체지향 프로그래밍의 반대라고 생각하는데

그것은 틀린 것이다.

 

1. 순차적 프로그래밍(Sequential Programming)

순차적 프로그래밍은 프로그래밍을 코드의 흐름, 순서에 기반하는 방법이다.

예시를 위한 극단적인 코드임미다
결과

여기서 중요하게 봐야 할 것은 "goto"이다.

순차적 프로그래밍은 이런 식으로 이루어진다. goto를 통해 순서를 제어하는 것이다.

위의 코드처럼 goto가 하나만 있다면 쉽다. 근데 이게 점점 많아진다면 코드의 가독성은 더욱더 떨어진다.

 

"goto"방식을 프로시저를 통해 중복을 피하고 단위화 할 방법이 절차적 프로그래밍이다.

 

2. 절차적 프로그래밍(Procedural Programming)

절차적 프로그래밍에서 절차는 말 그대로의 절차가 아닌 프로시저(procedure)를 의미한다.

"프로시저란 함수와 비슷한 의미이지만 프로시저는 반환 값이 없고 실행이 주가 되는 함수"라고 생각하면 된다.

구조화는 Struct로 오직 상태만을 저장할 수 있다.(c언어 기준)

그렇다면, 프로시저(행동 단위화)와 구조화(데이터 단위화)를 통해 위의 코드를 어떻게 바꿀 수 있을까?

 

Result라는 구조체를 통해 데이터를 단위 화하고 result_sum이라는 함수(프로시저)를 통해 중복을 피하고 행동의 단위화를 진행했다.

순차적 프로그래밍보다는 확실히 가독성은 좋아졌지만 데이터와 행동을 묶어서 독립적으로 관리하면 더 편하지 않을까?

그래서 나온 게 객체지향 프로그래밍이다.

 

3. 객체지향 프로그래밍(Object Oriented Programming)

 

Result라는 객체 안에 데이터(상태)와 Method(행위)를 묶어 독립적으로 관리할 수 있게 되었다.

독립적으로 관리하게 된다면 객체가 많아질 때에도 유지보수에 도움이 된다.

"객체 = Data(상태) + Method(행위)"라고 생각할 수 있다.

독립적인 객체(조각)들로 하나의 프로그램을 완성시키는 것이다.

객체 지향 프로그래밍은 초창기 형태와 지금의 형태가 조금 다르다.

초창기에서는 정말로 Data(상태)와 Method(행위)를 묶는 선에서 끝났지만 독립성이 무기라는 것을 알게 됨으로써 그 독립성을 지키는데 발전해 왔다.

 

객체 지향 프로그래밍의 4가지 특징-->

 

OOP-객체지향 프로그래밍의 주요특징 4가지

객체지향 프로그래밍의 주요 특징 4가지 캡슐화 상속 다형성 추상화 1. 캡슐화(Encapsulation) - 객체의 데이터(속성)와 메서드(데이터를 처리하는 행위)를 하나로 묶는다. - 실제 구현 내용 일부를 내

gwang-developer.tistory.com

 

 

 

 

 

 

 

참고


https://kamang-it.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8C%A8%EB%9F%AC%EB%8B%A4%EC%9E%84%EC%88%9C%EC%B0%A8%EC%A0%81%EB%B9%84%EA%B5%AC%EC%A1%B0%EC%A0%81%EC%A0%88%EC%B0%A8%EC%A0%81%EA%B5%AC%EC%A1%B0%EC%A0%81%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%EC%A0%81-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

[프로그래밍 패러다임]순차적(비구조적),절차적(구조적),객체지향적 프로그래밍

Tistory에서 제일 처음 쓰는 글이 이 글이다. 제일 처음 쓰는 글의 주제에 맞는지는 모르겠지만 이 포스팅에서는 코딩 패러다임에 대해서 짧게 이야기하려고한다. 코딩패러다임이 무엇인지 아는

kamang-it.tistory.com

 

 

 

 

 

 

 

 

 

 

'CS' 카테고리의 다른 글

Xcode TCP ACK 확인  (0) 2023.03.09
OOP-객체 지향 프로그래밍의 주요특징 4가지  (0) 2022.09.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함