본문 바로가기
Tech/Java

[Java] Object-Oriented Programming

by 소라소라잉 2019. 8. 8.

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값)은 성립조건과는 무관함.  

 

 

댓글