-
객체 지향 내용 정리CS📟 2022. 3. 16. 18:17
프로그래밍은 원래 절차 지향 적이었다.
작성한 순서대로 움직이고 눈앞의 문제를 해결해나가며 프로그램이 작성되었다.
그런 방식은 편리했고, 작성하기도 좋았다.하지만 기술이 발전하고 프로그램이 커지며, 해야 할 일들이 늘어나자 절차 지향의 단점들이 발견되기 시작한다.
커지면 커질수록 만든 사람도 알아볼 수 없는 코드, 당연히 오류를 찾기 어려웠고 나중에는 유지보수가 거의 불가능해진다.그래서 사람들은 정리를 해서 보기 편하게 만들 방법을 찾았고, 객체지향, 함수형 등의 패러다임이 등장했다.
사실 함수형, 객체지향 등의 말은 예전에도 있었다.
다만 실행 가능한 하드웨어가 없었다.그래서 기술이 발전한 요즘 다시금 주목을 받는 것이다.
협력
객체지향은 객체가 협력해서 문제를 해결하는 방식이다.
결합, 응집, 의존
객체가 협력하기 위해서 서로 의존성을 갖게 된다.
그 의존성이 너무 높아지면 결합도가 높다고 하고 객체 안에서 의존성이 높으면 응집도가 높다고 한다.응집도가 높으면 모듈 내부에 원소들이 연관성이 높고, 얼마나 관련 높은 책임들을 할당했는지 알 수 있게 된다.
결합도는 객체 간의 얼마나 많은 의존성이 있는지 파악할 수 있고 서로 얼마나 많이 알고 있는지 알 수 있다.
프로시저, 함수
프로시저는 내부의 상태를 변경하는 루틴이다.
함수는 필요한 값을 반환해준다.
캡슐화
객체지향은 변경하기 쉬운 객체를 만들기 위해 캡슐화를 한다.
의존성을 낮게 해 준다.클래스
프로시저와 데이터를 동일한 모듈 내부에 배치해서 객체 사이에 결합도를 낮춘다.
- 데이터 추상화와 프로시저 추상화를 함께 포함한 클래스를 이용해 시스템을 분해한다
- 타입을 기준으로 프로시저를 추상화한다.
추상화
불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남긴다.
- 사물들 간의 공통점은 취하고, 차이점은 버리는 일반화를 통해 단순하게 만든다.
- 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거해 단순하게 만든다.
답은 객체지향?
그렇지는 않다.
상황에 따라 잘 사용해야 하며 질 쓰기 위해서 알아야 하고 안 쓰려고 해도 알아야 왜 쓰면 안 되는지 알 수 있다.'CS📟' 카테고리의 다른 글
[TCP/IP] 트랜스포트 계층 (0) 2022.08.20 [CS 스터디] TCP/IP CH2. 네트워크 서비스와 애플리케이션 계층 (0) 2022.08.14 상태코드의 종류 (0) 2022.08.14 [TCP/IP] CH1. 컴퓨터 네트워크와 TCP/IP (0) 2022.08.04 CS 논리회로 (0) 2022.01.04