코딩과 결혼합니다

230713 - JAVA : 객체지향 프로그래밍 본문

2세/Java

230713 - JAVA : 객체지향 프로그래밍

코딩러버 2023. 7. 13. 21:15
728x90

클래스와 객체

클래스란 '객체를 정의해 놓은 것.' 또는 '객체의 설계도 또는 틀'이라고 정의할 수 있다.
프로그래밍에서 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다.

 

객체와 인스터스

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.

 

객체의 구성요소

속성 = 멤버변수
기능 = 메서드

일반적으로 멤버변수를 먼저 선언하고 멤버변수는 멤버변수끼리 메서드는 메서드끼리 모아 놓는다.

 

인스턴스의 생성과 사용

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

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

 

객체 배열

객체 배열은 참조변수들을 하나로 묶은 참조변수 배열이다. 
객체 배열을 생성하는 것은, 그저 객체를 다루기 위한 참조변수들이 만들어진 것일 뿐이다. 객체를 생성해서 객체 배열의 각 요소에 저장하는 것을 잊으면 안 된다.

 

변수와 메서드

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

  • 인스턴스변수 : 클래스 영역에서 선언되며, 인스턴스를 생성할 때 만들어진다.인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
  • 클래스변수 : 인스턴스변수 앞에 static을 붙인다. 클래스변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. 인스턴스를 생성하지 않고도 바로 사용할 수 있다. '클래스이름.클래스변수'와 같은 형식으로 사용한다. public을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 '전역변수'의 성격을 갖는다.
  • 지역변수 : 메서드 내에 선언되어 메서드 내에서만 사용 가능하며, 메서드가 종료되면 소멸되어 사용할 수 없게 된다.

 

2. 메서드

  • 메서드를 사용하는 이유
    • 높은 재사용성
    • 중복된 코드의 제거
    • 프로그램의 구조화

3. 메서드의 선언과 구현

  • 메서드는 크게 두 부분, '선언부'와 '구현부'로 이루어져있다.
  • 선언부 : '메서드의 이름'과 '매개변수 선언', 그리고 '반환타입'으로 구성되어 있다. 
매개변수는 메서드가 작업을 수행하는데 필요한 값들을 제공받기 위한 것이다. 각 변수간의 구분은 쉼표를 사용한다. 두 변수의 타입이 같을 때에도 변수의 타입을 생략할 수 없다.

반환타입 메서드의 작업수행 결과인 '반환값'의 타입을 적는다. 반환값이 없는 경우 반환타입으로 'void'를 적는다.
  • 구현부 : 괄호{}를 '메소드의 구현부'라고 하는데, 여기에 메서드를 호출했을 때 수행될 문장들을 넣는다.
 return문 메서드의 반환값이 'void'가 아닌 경우, 구현부 안에 'return 반환값;'이 반드시 포함되어 있어야 한다.
이 값의 타입은 반환타입과 일치하거나 적어도 자동형변환이 가능한 것이어야 한다. return문은 단 하나의 값만 반환할 수 있다.

지역변수 메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면 같은 이름의 변수를 선언해도 된다.

 

4. 메서드의 호출

  • 인자와 매개변수
인자의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 한다.인자의 타입은 매개변수의 매개변수의 타입과 일치하거나 자동으로 형변환이 가능한 것이어야 한다.

 

*메서드를 작성할 때는 매개변수의 유형성 검사하는 코드를 반드시 넣길 바란다.

메서드의 구현부를 작성할 때, 제일 먼저 해야 하는 일이 매개변수의 값이 적절한 것인지 확인 하는 것이다. 타입만 맞으면 어떤 값도 매개변수를 통해 넘어올 수 있기 때문에, 가능한 모든 경우의 수에 대해 고민하고 그에 대비한 코드를 작성해야 한다.