Noah_Developer
Developer Noah
Noah_Developer
전체 방문자
오늘
어제
  • 전체보기 (88)
    • Programmers (33)
      • Level1 (33)
    • FRONT-END (3)
      • React (2)
      • HTML (0)
      • CSS (0)
      • JavaScrpit (1)
    • BACK-END (23)
      • JAVA (14)
      • C (0)
      • Spring (5)
    • DATABASE (11)
      • MySQL (3)
      • Oracle (0)
    • IDE (2)
      • IntelliJ (2)
      • Eclipse (0)
      • VSCode (0)
    • Android (1)
    • 용어 (2)
      • 금융 (2)
    • Developer Diary (5)
      • Web (1)
    • 자격증 (1)
    • Operating System (3)
      • Linux (2)
    • Info (3)

블로그 메뉴

  • 홈
  • 방명록
  • 포트폴리오
  • 깃허브

공지사항

  • 🙏 방문 감사합니다.

인기 글

태그

  • 코딩테스트
  • 초보자 알고리즘
  • 프로그래머스 코딩연습
  • 프로그래머스 문제풀이
  • 알고리즘 문제
  • 카카오공채
  • programmers level 1
  • 크레인 인형뽑기 풀이
  • 코딩테스트 문제
  • 알고리즘 블로그
  • 알고리즘 풀이
  • 크레인 인형뽑기
  • 프로그래머스 연습문제
  • 프로그래머스 레벨1
  • 프로그래머스
  • 알고리즘 연습문제
  • 카카오 블라인드
  • String StringBuilder 차이
  • programmers
  • 카카오 블라인드 테스트
  • 알고리즘 예제
  • level1
  • 코딩테스트 문제 풀이
  • MySQL
  • 크레인 인형뽑기 정답
  • 알고리즘 쉬운문제
  • 자바 알고리즘 연습문제
  • 자바 쉬운 알고리즘
  • 코딩테스트 준비
  • 개발일기

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Noah_Developer

Developer Noah

BACK-END/JAVA

OOP(Object Oriented Programming)

2019. 3. 16. 23:36
728x90



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;

}

}


◆ 상속

부모 클래스에 선언된 필드나 메소드에 대한 사용권을 갖는것을 의미한다.
클래스 선언시 extends 클래스명 을 사용하여 확장하거나 implements를 사용하여 구현한 경우에 상속의 개념이 성립한다.

◆ 다형성

다양한 형태를 의미하는 객체지향의 개념

부모는 같을 수 있지만 자식들은 다를 수 있다. 
마찬가지로 자바에서는 최상위 클래스 java.lang.object 라고 부르는 클래스로부터 시작하여 모든 자식클래스들의 기능이 다르다는 것을 의미한다.

//부모클래스
public class Parent{
public void method(){
1
}
}

//자식클래스 1
public class son1 extends Parent{
public void method(){
1+2
}
}

//자식클래스 1
public class son2 extends Parent{
public void method(){
1+3
}
}

자식클래스들은 다른 method를 수행하여도 무관하다는 의미이다.

◆ Overriding

부모 클래스로 부터 받은 메소드를 재정의하는 것을 의미한다.
자바에서 다형성을 제공하는 기술중 하나.

//부모클래스
public class Parent{
public void method1111(){
부모님꺼
}
}

//자식클래스 1
public class son1 extends Parent{
public void method1111(){
이젠내꺼
}
}


◆ 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이라고 부른다. 


















728x90
저작자표시 비영리 동일조건 (새창열림)

'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
    'BACK-END/JAVA' 카테고리의 다른 글
    • [Java] 알고리즘 문자열 2진 검색(Binary Search) 예제
    • [Java] JSCH를 사용한 SFTP 서버 통신 및 파일 다운로드 예제
    • 자바 제어자 (Modifier)
    • 자바 접근제어자(Access Modifier)
    Noah_Developer
    Noah_Developer
    개발 기록 목적을 가진 블로그입니다.

    티스토리툴바