본문 바로가기
프로그래밍 지식/기본지식

객체지향언어

by Ing_til_death 2021. 10. 19.

객체 지향 프로그래밍 정리하기 _ 수업 상세-복사.pdf
0.19MB

 객체

- 정의: 실제로 존재하는 것. 사물 또는 개념

- 용도: 객체가 가지고있는 기능과 속성에 따라 다름

- 유형의 객체(책상, TV 등) 와 무형의 객체(수학 공식, 프로그램 에러와 같은 논리나 개념)

 

● 객체지향 언어

설계와 관련된 언어이다. 그렇기에 어렵다. 시행착오를 겪어야 설계를 잘 한다. 설계가 안 된다고 이론서로 빠지지말고 일단 부딪혀보라

- 80년초 소프트웨어의 위기- 빠른 변화를 못 쫓아감.
- 해결책으로 객체지향 언어 도입(절차적->객체)

- 객체지향개념은 다른 프로그램 언어와 같이 군사적인 목적에서 시작. 실제 세계를 컴퓨터 안에 실현시켜 미사일 같은 프로그램의 정확성을 높이려고 했다. 실제세계를 SW로 만들어 실행. (하드웨어->SW 화하여 컴퓨터에서 실행) 이를 위해 분석과 관찰이 필요했다.   HW - > SW (프로그램이자 코드다.) 

-  컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것
- 프로그램을 다수의 "객체"를 만들고, 이들이 서로 상호작용을 통해 만들어지는 방식이다.
- 장점: 서로 관련된 값들을 묶을 수 있다는 장점 by 상속, 다형성, 추상 클래스 + t.hour, t.second 등=> 코드의 재사용성이 높고, 유지보수 용이, 중복 코드 제거
- 단점: 코딩난이도 상승 + 개발속도 느림
- 클래스: 객체를 정의한 것. 객체를 생성하는데 필요한 설계도
- 객체: 변수 + 메서드
- 캡슐화: 외부로부터 데이터 보호(직접 접근 막고, 간접 접근 허용) by 접근제어자 private 사용메서드를 통해 iv에 접근해야한다. 값 보호는 엉뚱한 데이터가 되지않도록 막는 것을 의미한다. 

- 객체지향언어: 자동으로 메모리 처리해준다.
절차=순서대로 진행한거구요 객체지향=순서가 정해진 객체를 먼저 처리한다는 뜻. 문장 내에서 동사의 행동이 끼치는 대상이 지정한 방향으로 나아가는 말. 내가 만든 프로그램들이 객체마다 따로따로 진행된다는 것. 각 객체에는 속성을 갖고 있고 행위라는 동작을 한다. 서로 상호작용도 하고, 상속도 하고... 마크를 예를 들자면, 사람이라는 객체가 있다. 신체를 이루는 블록이 있을 것. 블록을 이루는 각 셀은 칼라, 크기 등의 속성이 있을 것이다. 
https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D


vs 

 절차지향언어

흐름대로 읽기(절대 객체지향의 반대가 아니다) . 데이터에 대한 순서를 파악하고 필요한 기능을 함수로 만들어 절차적으로 진행 ex) c언어
개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 합니다.
자동차 제조를 예로 들자면, 자동차는 엔진, 차체, 핸들, 의자, 바퀴 순으로 차례대로 만들어져야 합니다. 서로 분리되어도 안 되고, 순서가 틀려도 안 됩니다. 절차지향 프로그래밍 역시 이와 같습니다. 
절차지향언어의 구조는 컴퓨터의 처리구조와 유사합니다. 따라서 실행 속도가 빠르다는 것이 장점입니다.
하지만, 핸들이 고장났다고 엔진부터 바퀴까지 전부 수리해야 한다면 얼마나 비효율적일까요?

 

 추상화: 복잡한 내용은 숨기고, 주요 기능에만 신경쓰게 하는 것(user interface를 통해)
- 3단계: 변수, 함수, 객체
- 변수: 복잡한 내용을 간단한 기호로 숨긴다.
- 함수: 명령을 저장하는 것(해당 명령에 대해 자세히 몰라도 작동할 수 있게한다)

'프로그래밍 지식 > 기본지식' 카테고리의 다른 글

소프트웨어  (0) 2021.10.19
컴퓨터 사이언스의 기본기  (0) 2021.10.19
프로그래밍 언어  (0) 2021.10.19
웹 브라우저 및 HTTP  (0) 2021.10.19
기본  (0) 2021.06.15

댓글