일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- array
- implement
- Math
- 파이썬
- bit manipulation
- Counting
- sorting
- Tree
- dynamic programming
- Data Structure
- java
- simulation
- Class
- string
- Binary Search
- Method
- greedy
- SQL
- geometry
- Matrix
- 자바
- two pointers
- 구현
- 코딩테스트
- Binary Tree
- Number Theory
- hash table
- 코테
- database
- Stack
- Today
- Total
코린이의 소소한 공부노트
객체지향 언어의 도입 배경과 특징 본문
전에 주를 이루던 코볼(Cobol), 포트란(Fortran), C언어 등은 코드를 위에서 아래로 순서대로 실행하는 절차적 프로그래밍 언어다. 그러나 이런 언어들은 빠르게 변화는 시스템의 요구를 쫓아가지 못해 점차 쓰지 않게 되었다.
- 절차 지향 언어는 코드의 재사용성이 크게 떨어진다.
- 적은 노력으로 변경에 대응할 수 있는 유지보수성이 떨어진다.
이에 대한 해결책으로 도입하게 된 것이 시뮬라(Simula), 스몰톡(Smalltalk) 등의 객체지향 언어였다. C언어도 이후 C++로 발전했으나 받아들이기 어려웠던 부분들이 있어 이런 단점을 보완해 자바(Java)가 나오게 되었고, 이보다 더 간결하면서 직관적인 파이썬(Python)까지 이어지게 되었다.
객체지향 프로그래밍(Object-oriented programming = oop)의 핵심적 특징은 다음 4가지와 같다.
1. 캡슐화
- 객체의 속성과 메서드를 하나로 묶어서 감추는 것을 말한다.
- 사탕의 색과 맛이 속성과 메서드라고 한다면, 사탕을 '사탕'이라고 적힌 포장지로 감싸는 것을 캡슐화라고 할 수 있다.
2. 상속
- 어떤 클래스에 정의되어 있는 속성이나 메서드를 그대로 물려받아 쓰는 것을 말한다.
- 물려받아 쓰기 때문에 코드의 재사용성이 좋아진다.
- 물려주는 클래스를 super / parent 클래스라고 하고, 물려받는 클래스는 sub / child 클래스라고 한다.
- 1개의 클래스는 1개의 클래스만 상속받을 수 있다.
3. 추상화
- 공통된 속성이나 메서드들을 묶어서 이름을 붙이는 것을 말한다.
- 이렇게 만들어진 클래스를 상속받거나 인터페이스를 구현해 코드의 재사용성을 높일 수 있다.
4. 다형성
- 변수, 상수, 메서드 등의 프로그래밍 요소들이 여러 타입을 커버할 수 있는 성질을 말한다.
- 단형성 프로그래밍 언어는 각 타입마다 다른 메서드를 이용하지만, 다형성은 1가지 메서드가 여러 타입을 커버한다.
아래 예시는 이해를 돕기 위해 임의로 만든 것으로, 실제 사용과는 다르다.
// num는 정수형
// arr는 배열
// 1) 단형성 체계에서 문자열로 변환하기
str1 = numToString(num);
str2 = arrToString(arr);
// 2) 다형성 체계에서 문자열로 변환하기
str1 = toString(num);
str2 = toString(arr);
각각의 자세한 설명은 다른 글에서 하고자 한다.
'Java' 카테고리의 다른 글
객체 배열 (0) | 2022.03.01 |
---|---|
클래스, 객체, 인스턴스 (0) | 2022.02.20 |
배열 (5) Arrays클래스 (0) | 2022.02.20 |
String 클래스 (0) | 2022.02.06 |
배열 (4) 2차원 배열 (0) | 2022.01.24 |