절차지향과 객체지향
실행되는 순서가 위에서부터 아래로 순차적으로 진행되는 형태를 가진 언어
프로그램 재사용 시 기존에 만들어진 코드를 복사하여 붙여넣기 하는 방법 사용.(ㅠㅠ)
-자주 사용되는 특정한 코드를 하나의 모듈(묶음)로 묶어 놓는 것.
-프로그래머가 사용하고 싶을 때마다 호출하여 코드가 실행되게 함.
-데이터와 함수간에 유기적인 관계성을 갖지 못함.(절차지향도 함수가 있긴 하지만 데이터와 함수가 관계를 가져야 할 때에 한계에 부딪힘)
그래서 객체지향이 등장.
즉, 절차지향에서 모듈성을 높이기 위해 함수가 등장. 그리고 함수보다 더 높은 모듈화를 위해 자신이 가지고 있는 고유의 데이터와 이 데이터를 처리할 수 있는 메서드를 가지고 있는 객체가 등장
객체, 클래스, 인스턴스
-객체
현실 세계에 존재하는 유무형의 모든 것.
-클래스
현실세계의 객체를 컴퓨터 메모리에 생성할 수 있는 템플릿
-인스턴스
컴퓨터 메모리에 존재하는 객체. 즉 클래스로부터 생성된 메모리 상의 객체이다.(앞으로 객체는 인스턴스와 동일한 의미로 표현)
상속과 다형성
-상속
상속은 코드를 간결하게 하여 코드의 재사용성을 높이는 객체지향의 핵심 개념.
객체들 사이의 계층구조를 이룰 수 있음. 상위계층으로 갈 수록 일반화, 보편화되고, 하위로 갈수록 특수화, 개별화 됨.
-상속의 논리적 관계
클래스들 사이에 공통된 속성이나 기능들이 있을 경우, 상속을 통해 재사용성을 높일 수 있음. 단, 부모클래스와 자식클래스의 관계가 일반화, 특별화 관계(is a)에 있어야 함. 즉, 문법적으로 강제되는 것이 아니라 논리적으로 판단되어야 함.
ex)프린터라는 부모클래스가 있는데, 자식클래스에 삼성카메라가 있는것은 옳지 않음.
-다형성
"one inteface, multiple implementation" 하나의 인터페이스를 이용해 서로 다른 구현을 제공한다.
다형성은 메서드 오버로딩과 메서드 오버라이딩을 통해 제공됨.
오버로딩이란, 한 클래스에 같은이름의 메서드를 여러개 정의하면서, 그 인자나 개수나 유형은 다르게 한 것.
오버라이딩이란, 상속관계에 있는 하위클래스가 상위클래스가 가지고 있는 메서드를 재정의하는 것. 재정의된 메서드가 선언된 형태는 상위클래스에서 선언된 것과 같음.
추상화, 캡슐화, 정보은닉, 메시지
- 추상화
구체적인 사실들을 일반화시켜 기술하는 것.
현실세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓는 것. 클래스를 정의하는데 중요한 역할을 함.
ex) 비행기, 자동차, 열차, 배는 모두 운송수단의 동일한 특징인 화물이나 승객을 운반한다는 추상화를 통해서, "운송수단"이란 클래스를 정의할 수 있음
- 캡슐화
변수와 메서드를 하나의 추상화된 클래스로 묶는 과정을 의미함. 변수와 메서드를 하나로 묶어 독립적으로 동작하지 않도록 한다.
캡슐 속 객체는 데이터와 메서드를 포함하고 있어서, 따로 분리할 수 없음.
객체가 제공하는 메서드를 통해 객체를 이용하고, 데이터가 실제로 어떻게 처리되는지 알 필요 없음.
- 정보은닉
객체지향언어에서는 캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음.
- 메시지
객체 간에 서로 통신하는 방법.
객체 간에 메시지를 주고받기 때문에 여러 객체는 동일한 프로세스를 가질 필요 없음.
서로 메시지를 주고받는 데 객체가 존재하는 위치는 제약이 되지 않음.
ex)
위 내용을 코드로 보면 다음과 같음
'개발삽질 > SSAFY하는 동안 기록' 카테고리의 다른 글
[SWEA]자바 초급(2) - 4차시: 메서드 오버로딩과 매개변수 (0) | 2021.12.29 |
---|---|
[SWEA]자바 초급(2) - 2,3차시: Modifier (0) | 2021.12.29 |
[SWEA] 자바 초급(1) - 3차시, 4차시: 연산자, 배열, 제어문 (0) | 2021.12.29 |
[SWEA] 자바 초급(1) - 2차시: 자바 프로그램 구조 및 데이터 타입 (0) | 2021.12.28 |
[SWEA] 자바 초급(1) - 1차시: 자바언어 특징, 플랫폼 구조 (0) | 2021.12.28 |
댓글