본문 바로가기
IT/Java

OOP

by 봉즙 2019. 6. 22.

객체 지향 언어를 사용하는 이유

  • 캡슐
  • 상속
  • 추상화
  • 다형성

 

클래스 : 객체를 정의해놓은것

  • 객체를 생성하는데 사용
  • 변수 + 메서드
  • 사용자 정의 타입

 

객체 : 실제로 존재하는 것

  • 용도는 객체가 가지고 있는 기능과 속성에 따라 다르다.

 

인스턴스 : 어떠한 클래스로 부터 만들어진 객체

  • 클래스로 부터 객체를 만드는 과정을 클래스의 인스턴스화

 

객체의 구성 요소

  • 속성 : 멤버 변수, 특성, 필드, 상태 ( ex. 크기, 길이, 높이, 색상, 볼륨 ..)
  • 기능 : 메서드, 함수, 행위 (ex. 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기...)

 

인스턴스의 생성과 사용

클래스명 변수명; //클래스의 객체를 참조하기 위한 변수 선언
변수명 = new 클래스명(); //클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

TV t; //TV클래스 타입의 참조변수 t를 선언
t = new TV(); //Tv인스턴스를 생성 후, 생성된 TV인스턴스의 주소를 t에 저장

※ 인스턴스는  참조 변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.

 

데이터와 함수의 결합입(클래스)

  • 변수 : 하나의 데이터를 저장 할 수 있는 공간
  • 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
  • 구조체 : 서로 관련된 여러 데이터를 종류에 관계 없이 하나의 집합으로 저장할 수 있는 공간
  • 클래스 : 데이터화 함수의 결합(구조체 + 함수)

 

사용자 정의 타입(클래스)

  • 기본적으로 제공하는 자료형 외에 서로 관련된 변수를 묶어서 하나의 타입으로 새로 추가하는 것을 사용자 정의 타입

 

변수와 메서드

선언 위치에 따른 변수의 종류

//cv = static + iv
{int iv; //인스턴스 변수	//클래스 영역 iv
static int cv; //클래스 변수(static 변수, 공유변수)

void method()//메서드 영역 lv
{
int lv = 0; //지역변수	메서드 
}
}

변수의 종류와 특징

클래스 변수(cv)

  • 선언 위치 : 클래스 영역
  • 생성 시기 : 클래스가 메모리에 올라갔을 때

인스턴스 변수(iv)

  • 선언 위치 : 클래스 영역
  • 생성시기 : 인스턴스가 생성되었을 때

지역변수 (lv)

  • 선언 위치 : 클래스 영역 이외 영역(메서드, 생성자, 초기화 블럭 내부)
  • 생성 시기 : 변수 선언문이 수행되었을 때
  • 선언된 블럭을 벗어나면 소멸되어 사용할 수 없다.

인스턴스 변수는 인스턴스가 생성될 때 마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스 변수는 모든 인스턴스가 하나의 저장 공간을 고유하므로, 항상 공통된 값을 갖는다.

※참조변수를 통해서도 클래스 변수를 사용하거나 변경 할 수 있다.

 

메서드 : 특정 작업을 수행하는 일련의 문장을 하나로 묶은 것. 수학의 함수와 유사

  • 높은 재사용성
  • 중복된 코드의 제거
  • 프로그램의 구조화
반환타입 메서드이름 (타입 변수명, 타입변수명,....) //선언부  반환타입(출력) 메서드이름(이름) 타입변수명(이름)
{//메서드 호출시 수행될 코드 //구현부
}

※매개변수의 선언시 일반적인 변수 선언과는 달리 두 변수의 타입이 같아도 변수의 타입을 생략 할 수 없다.

반환 타입 : 메서드의 출력 결과를 반환하는 타입을 적는다. 반환값이 없는 경우 void를 사용

return문 : void가 아닌 경우 구현부 안에 return 반환값; 을 반드시 포함시켜야한다. 이 값의 타입은 반환타입과 일치하거나 자동형변환이 가능한 것이어야 한다. 모든 메서드에는 적어도 1개의 return문이 있어야 하지만 void의 경우 컴파일러가 자동으로 추가해준다.

지역변수(lv)  : 메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있다.

메서드의 호출 : 메서드이름(값1, 값2, ....); ///메서드를 호출하는 방법

  • 인자 : 메서드 호출시 인자의 개수와 순서는 호출된 메서드에 선언된 매개 변수와 일치 해야한다.

매개변수의 유효성검사 : 입력 값을 체크하여 타입에 맞지 않는 변수를 사용하도록 해서는 안된다.

'IT > Java' 카테고리의 다른 글

Overloading  (0) 2019.06.23
JVM 메모리 구조  (0) 2019.06.23
다차원 배열  (0) 2019.06.18
String 배열  (0) 2019.06.18
배열  (0) 2019.06.18

댓글