Olive Study Room
[CS] OOP(Object Oriented Programming)란? 본문
Class
object의 템플릿. 데이터필드와 메소드 필드를 갖는다.
object
클래스의 인스턴스
선지식..!
OOP
(Object Oriented Programming) 객체 지향 프로그래밍
- 문제를 여러 개의 객체 단위로 나누어 작업하는 것
- 공장에 설계도를 만들어(=클래스) 인스턴스(객체)를 찍어내는 방식.
- OOP는 절자치향(C언어와 같은)에 비해 사람의 사고방식처럼 유기적인 관계로 프로세스가 진행된다.
OOP의 특징
1. Encapsulation(캡슐화)
객체의 특정한 목적을 위한 변수나 메소드를 하나로 묶는 것
클래스를 만들 때 추후 특정한 목적을 잘 수행할 수 있도록 변수와 메소드를 관련성있게 구성해야 한다.
캡슐화의 목적은 정보 은닉이다!
* 정보 은닉이란?
getter와 setter로 메서드를 통해서만 접근하면 변수를 안전하게 보호할 수 있다.
example. user객체에 접근할 때 개인정보는 private으로 선언하고 메서드의 getter, setter를 통해 접근한다.
2. Inheritance(상속)
기존 상위 클래스의 기능을 가져와 재사용할 수 있는 기능
- 클래스간의 부모-자식 관계
- 상위 클래스의 기능 뿐만 아니라 새 기능을 추가할 수도 있다.
- 코드의 재사용성, 중복 제거, 유지 보수 편의를 위해 사용한다.
3. Polymorphism(다형성)
형태가 같은데 다른 기능을 하는 것
- 코드 재사용을 가능하게 해 유지보수가 용이하고 코드 길이도 감소할 수 있다.
- 메소드 이름의 낭비를 막는다.
- 오버라이딩과 오버로딩을 통해 구현한다.
* Overriding & Overloading 이란?
오버라이딩 : 부모 클래스에서 상속받은 메소드를 재 정의해서 사용하는 것
오버로딩 : 매개변수 갯수나 데이터 타입이 다르게 이미 있는 이름의 메소드를 추가하는 것
4. Abstraction(추상화)
객체의 공통된 부분을 표현하는 것
- 공통으로 필요한 변수와 메소드를 갖는 클래스(추상 클래스)를 만든다.
- 가상클래스를 부모로 갖고 있는 자식 클래스는 가상함수를 꼭 구현해야 한다.
주로 architecture가 가상클래스를 구현함으로써 개발자가 가상함수를 구현하도록 한다.
.. 추후 추가 예정!
'cs' 카테고리의 다른 글
[CS] HTTP 프로토콜(HyperText Transfer Protocol), URL (1) | 2021.05.17 |
---|---|
[CS] 동시성(Concurrency) 프로그래밍과 비동기(Asynchronous) 프로그래밍 (0) | 2021.04.04 |
Comments