2019.08.12

 

 Java를 배우면서 객체 지향 프로그래밍을 많이 들었는데 정확히 어떤 개념인지도 모르고 프로그래밍 하는것 같아서 정리함

 

 // 객체 지향 프로그래밍 (Object-Oriented Programming)

 - 컴퓨터 프로그래밍의 패러다임 중 하나

 - 프로그래밍에서 필요한 데이터를 추상화시키고 상태와 행위를 가진 객체를 만들어 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍

 

 // 기본 구성 요소

 클래스 (Class) 

 - 같은 종류의 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것

 - 객체 지향 프로그램의 기본적인 사용자 정의 데이터형

 - 클래스는 다른 클래스 또는 외부 요소와 독립적으로 디자인하여야 한다

 

 객체 (Object)

 - 클래스의 인스턴스 (실제로 메모상에 할당된 것)

 - 객체는 자신 고유의 속성을 가지며 클래스에서 정의한 행위를 수행할 수 있다

 - 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용한다

 

 메서드 (Method), 메시지 (Message)

 - 클래스로부터 생성된 객체를 사용하는 방법

 - 객체에 명령을 내리는 메시지

 - 메서드는 한 객체의 서브루틴 형대로 객체의 속성을 조작하는 데 사용

 - 객체 간의 통신은 메시지를 통해 이루어진다

 

 // 객체 지향 프로그래밍의 특징

 - 기본적으로 자료 추상화, 상속, 다중 상속,다형성, 동적 바인딩 등의 특징이 존재한다

 - 자료 추상화를 기초로 하여 상속, 다형성, 동적 바인딩이 시스템의 복잡성을 제어하기 위해 서로 맞물려 기능하는 것

 

 추상화 (Abstraction)

 - 객체들을 프로그램으로 변환하기 위해서 객체들의 공통된 특성들을 파악하고 불필요한 특성들은 제거하는 과정

 

 상속 (inheritance)

 - 새로운 클래가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능

 - 상속을 받는 새로운 클래스를 부클래스, 파생 클래스, 하위 클래스 혹은 자식 클래스라 하며 상속하는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 한다

 - 상속을 통해서 기존의 클래스를 상속받은 하위 클래스를 이용해 프로그램의 요구에 맞춰 클래스를 수정, 클래스 간의 종속 관계를 형성함으로써 객체를 조직화할 수 있다

 

 다형성

 - 어떤 한 요소에 여러 개념을 넣어 놓는 것

 - 일반적으로 오버라이딩이나 오버로딩을 의미한다 (자세한 내용은 #46 Java 오버로딩, 오버라이딩)

 - 다형성을 통해 프로그램 안의 객체 간의 관계를 조직적으로 나타낼 수 있다

 

 동적 바인딩

 - 실행 기간 중에 일어나거나 실행 과정에서 변경될 수 있는 바인딩

 - 컴파일 시간에 완료되어 변화하지 않는 정적 바인딩과 대비되는 개념

 - 동적 바인딩은 프로그램의 한 개체나 기호를 실행 과정에 여러 속성이나 연산에 바인딩함으로써 다형성을 실현한다

 

 캡슐화

 - 코드를 재수정 없이 재활용하는 것이 목적

 - 캡슐화를 통해 관련된 기능과 특성을 한 곳에 모으고 분류하기 때문에 재활용이 원활해졌다

 - 객체 지향 프로그래밍에서 기능과 특성의 모음을 '클래스' 라는 '캡슐'에 분류해서 넣는 것이 캡슐화이다

 - 캡슐화의 예로는 DTO가 있다 

 

 // 객체 지향 프로그래밍의 장점과 단점

 장점

 - 코드 재상용이 용이하여 유지 보수가 쉽다

 - 업무 분담이 쉬어 대형 프로젝트에 적합하다

 - 클래스에 하나의 문제 해결을 위한 데이터를 모아 놓은 데이터형을 사용함으로써 응집력을 강화하고, 클래스 간에 독립적으로 디자인함으로써 결합력을 약하게 할 수 있다

 

 단점

 - 처리 속도가 상대적으로 느리고 객체가 많아질 수록 용량이 커질 수 있다

 - 설계식 많은 시간과 노력이 필요하다

 

 // 객체 지향 언어

- Objective-C, C++, C#, Java, Python, Ruby, ASP 등등

 

Stack Overflow 에서 가장 많이 물어본 언어순

 

 출처 : 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

 

객체 지향 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에

ko.wikipedia.org

  출처 : https://jeong-pro.tistory.com/95

 

객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)

객체 지향 프로그래밍(Object Oriented Programming) 여러 SW기업 신입사원 기술면접에서 워밍업느낌으로 면접자들 긴장을 풀어줄 겸 처음으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해 설명 한번 해..

jeong-pro.tistory.com

 

'교육 > 기타' 카테고리의 다른 글

#66 UI/UX 디자인  (0) 2019.08.14
#65 이클립스에서 ERD 플러그인하기  (0) 2019.08.13
#40 CRUD  (0) 2019.07.30
#3 Get방식과 Post방식  (0) 2019.07.23
#2 개발환경, 절대경로와 상대경로  (0) 2019.07.23

+ Recent posts