티스토리 뷰
Object Oriented Programming (OOP)
객체 지향 프로그래밍은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
클래스, 객체, 인스턴스
클래스 (class)
- 객체를 만들어 내기 위한 설계도 혹은 틀
- 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)와 행위(behavior)를 변수와 메서드로 정의한 것
객체 (object)
- 소프트웨어 세계에 구현할 대상
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중, 자신의 속성을 가지며 다른 객체와 식별가능한 것
- 고유한 속성과 함수로 구성된 클래스를 통해 생성된다
- 객체는 모든 인스턴스를 대표하는 포괄적인 의미이다
인스턴스 (instance)
- 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
- 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 프로그램에서 사용되는 데이터
객체 지향 특징
- 추상화 (Abstraction)
필요하지 않은 정보를 제외하고 필요로 하는 속성이나 행동을 추출하는 작업
구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념 혹은 집합으로 다루는 수단 - 캡슐화 (Encaptulation)
객체의 속성(data fields)와 행위(methods)를 하나의 클래스라는 캡슐에 묶는 것
외부에서 객체의 내부데이터로 직접 접근하지 못하게 통제하여 정보 은닉 - 상속 (Inheritance)
하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것
기능의 일부분을 변경하는 경우 자식 클래스에서 상속받아 수정 및 사용
상속은 캡슐화 유지, 클래스의 재사용이 용이하도록 해준다 - 다형성 (Polymorphism)
하나의 객체가 여러 가지 타입을 가질 수 있는 것- 오버로딩 (Overloading) : 이름이 같은 메서드 또는 생성자를 매개변수의 개수나 타입을 다르게 정의하는 것
- 오버라이딩 (Overriding) : 부모 클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것
장점과 단점
장점
- 코드가 간결해진다
- 객체는 계속 활용할 수 있기 때문에 코드의 재사용성이 높아진다
- 객체 단위로 작성되면 기능에 대한 오류가 발생했을 때 개발자는 디버깅이 쉽고 유지보수가 용이하다
- 사용자는 내부적으로 데이터가 어떻게 동작하는지 몰라도 기능을 사용할 수 있기 때문에 생산성이 높아진다
- 강한 응집력과 약한 결합력을 통해 소프트웨어의 질을 향상시킨다
단점
- 처리 시간이 비교적 오래 걸린다
- 프로그램을 설계할 때 많은 고민과 시간을 투자해야 한다
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SW Expert Academy
- 백준
- Two Pointer
- algorithm
- 큐
- 배열
- C++
- Java
- BFS
- Kotlin
- 프로그래머스
- 문자열
- 두 포인터
- 트리
- 투 포인터
- 스택
- 브루트포스
- 분할 정복
- programmers
- BOJ
- 위상 정렬
- 그래프
- 정렬
- 재귀
- dfs
- SWEA
- 이분 탐색
- 자바
- 알고리즘
- 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함