*
1) OOP(1980~2000)->2) FP(2000~)->3) ML
1) OOP
- 등장배경 : 기존 절차형 언어가 SW의 변화를 감당못함
2) FP
- BigData
3) Machine Learning
- ML이론(1980) + BigData
*
특징
: 코드간의 관계를 맺어주기 때문에 관리가 용이해짐 => 코드의 재사용성↑ 코드중복↓
1) 캡슐화
2) 상속
3) 추상화
4) 다형성
*
모든 객체는 참조변수(리모컨)를 필요로 한다.
(객체생성 : TV t = new TV())
(객체사용 : t.channerl = 7; >>> t = 리모컨)
*
객체배열 = 객체를 묶어놓은 것 = 참조변수의 배열
(Tv[] tvArr = new TV[3];)
*
클래스의 정의(개념)
1) (개념적인) 설계도
2) 데이터+함수 (변수+메소드)
3) 사용자정의 타입 (내가 만드는 타입)
*
함수 : 데이터를 이용한 작업(연산)
절차형 프로그래밍에서는 함수와 데이터를 따로 관리/사용하였으나 OOP에서부터 같이 묶어놓음
-> 같이 그룹화하며 생긴 문제점?(OOP의 문제점) = '공유'의 문제(?)
*
public class Class190808_1 { int iv; static int cv; void method() { int lv; } } |
iv => Instance variable
: 선언위치 - 클래스영역
생성시기 - 인스턴스가 생성되었을 때
cv => class variable
: 선언위치 - 클래스영역
생성시기 - 클래스가 메모리에 올라갈 때 = 객체가 생성될 때
lv => local variable
: 선언위치 - 클래스 영역 이외의 영역
생성시기 - 변수 선언문이 수행되었을 때
*
OOP의 5개 원칙(S-O-L-I-D)
1.Single Responsibility : 단일책임의 원칙 - 하나의 메서드는 하나의 일만 한다.
2.OCP : (Open/Close Principle : 개방/폐쇄의 원칙)Open Close.. -> 확장은 Open시키고, 변경은 Close시킨다 => 변하면 안되는 것들은 변경 못하게, 원래 있던 개념을 확장하는 것은 Open(상속 등..을 통해서) (변하는것과 변하지않는것을 철저히 분리). 조상을 만들어놓고 변경사항이 생기면 조상을 변경하지 말고 상속을 해서 추가를 해~
3.Liscov's Substitution : 리스코프의 치환법칙. 객체를 다른 것으로 치환해도 문제가 없어야함.
(내용추가. )
*
클래스 메서드(with static)와 인스턴스 메서드의 차이점 -> 인스턴스 멤버(인스턴스 변수,인스턴스 메서드)를 사용할수 있느냐/없느냐. 인스턴스 멤버의 사용여부.
*오버로딩(Overloading)이란?
-> 하나의 클래스 안에 같은 이름의 메서드들이 여러개 있는 것.
- 오버로딩의 성립조건
1) 이름이 같고
2) 매개변수 갯수나 타입이 달라야 함.
3) 반환값(Return값)은 성립조건과는 무관함.
'Tech > Java' 카테고리의 다른 글
[Java] AWT를 이용한 GUI빙고게임 (0) | 2019.08.27 |
---|---|
[Java] 컬렉션 프레임웍(Collections Framework) 연습문제 (0) | 2019.08.23 |
[Java] 컬렉션 프레임워크(Collections Framework) (0) | 2019.08.22 |
[Java] Vector 구현 (0) | 2019.08.21 |
[Java] 별찍기문제 (0) | 2019.08.05 |
댓글