OOP
Java는 OOP를 지원하는 언어이다.
◆ OOP(Object Oriented Proramming)
현실(Real World)에 있는것을 시스템화 하기위한것이 객체 지향 프로그래밍이다.
◆ Object
객체를 의미한다.
현실에서 시스템으로 옮겨 질 수 있는 모든 것을 의미한다.
크게 3가지로 나누면
물리적인 객체 / 개념적인 객체 / 소프트웨어적 객체로 나눌 수 있다.
객체는 식별성과 상태와 행위를 가진다.
|◆ 식별성 (Identyfier)
분별하여 알아보는 특징이다.
우주라는 곳에서 지구를 표현하려고 할 때, 파랗고 23.5도 기울어져 있는 것이라고 표현하지 않고 지구라는 표현을 사용하는 것을 식별성이라고 부릅니다.
|◆ 행위 (Method)
Java에서 행위는 메소드로 표현할 수 있다.
~~하다 라는 동사적의미를 갖는다.
|◆ 상태 (State)는 특성(Attribute)을 가지는 것을 의미한다.
Java에서 상태는 클래스나 인스턴스 변수로 표현 할 수 있다.
객체가 식별성과 상태와 행위를 가져야 하는이유는 사람을 객체로 만들었을 경우 그 사람의 이름은 겹칠 수 있지만 하는 행위나 국적도 다를수있고 외모도 다를 수 있다.
그렇기 때문에 객체는 항상 서로 다른 상태를 갖는다고 할 수있다.
◆ 메세지(Message)
메소드에서 다른 메소도를 호출할 때 전달하는 값을 메시지라고 한다.
자바에서는 개발자가 메소드를 호출할 때 넘겨주는 매개 변수들이 여기에 속한다.
아래의 캡슐화 코드에서 newState가 메시지리를 의미하는 매개변수이다.
◆ Class
상태(Field)와 행위(Method)를 가지는 자바의 기본단위
◆ 캡슐화
클래스 밖에서 접근 가능한 대상을 제한하는 정보 은닉(Information Hiding)이 가능하다.
아래의 코딩을 보자.
public class Common{
// private로 선언함으로써 현재 클래스에서만 접근가능 (정보은닉상태)
private int state = 0 ;
// 다른클래스에서 setState(1)을 호출하였을 때 수행하는 메소드
public void setState(int newState){
// state를 직접적으로 값을 바꾸는 것이 아닌 알고있는 정보만을 넘겨 사용하는 상태를 건드림
state += newState;
}
// 다른클래스에서 getState()를 호출하였을때 수행하는 메소드
public int getState(){
//state 값을 리턴함
return state;
}
}
◆ OverLoading
메소드의 이름은 동일해도 매개변수를 다르게 하는 것을 의미한다.
동일한 기능(method)를 수행하더라도 매개변수의 타입을 여러가지로 하여 쉽게 구현할 수 있게 해준다.
매개변수의 타입은 ,(comma) 로 구분하여 사용한다.
public class OverLoading{
public OverLoading(){ // defalut 생성자
}
public OverLoading(String a){ // a를 문자열로 받는 생성자 메소드
}
public void getData(){ // 매개변수를 받지 않는 메소드
}
public void getData(int i){ // i를 정수형으로 받는 메소드
}
public void getData(int i , String b , double c){ // i를 정수형으로 받고 b를 문자열로 c를 실수형으로 받는 메소드
}
}
매개변수에 따라서 호출되는 메소드가 달라진다. 이 기술을 OverLoading이라고 부른다.
'BACK-END > JAVA' 카테고리의 다른 글
[Java] 로그 생성 파일 경로 추출 (0) | 2021.04.19 |
---|---|
[Java] 알고리즘 문자열 2진 검색(Binary Search) 예제 (0) | 2021.04.16 |
[Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제 (0) | 2021.04.15 |
자바 제어자 (Modifier) (0) | 2019.03.19 |
자바 접근제어자(Access Modifier) (0) | 2019.03.18 |