객체지향 언어

객체지향 언어란 프로그래밍 언어에 객체지향의 개념과 규칙을 더한 것이다. 80년대 초 빠른 변화를 쫓아가지 못한 소프트웨어 업계에서 해결책으로 객체지향 언어를 도입하기 시작했다. 기존의 절차적인 방식보다 객체지향적으로 코드를 짜면 코드의 재사용성이 높아지고 유지보수에 용이하고 코드의 중복을 제거해 오동작을 방지할 수 있고 제어자와 메서드를 이용해 데이터를 보호하고 값을 유지할 수 있다.

클래스와 객체

클래스와 객체의 관계를 제품 설계도와 제품에 많이들 비교한다.

객체의 생성과 사용

public static void main(String[] args) {
  Tv t; // Tv클래스 타입의 객체를 참조하기위한 참조변수 선언
  t = new TV(); // 티비 인스턴스 생성 후, 객체의 주소를 참조변수(t)에 저장

  t.channel = 7;
  t.channelDown();  
}

class Tv {
  // Tv's attributes(멤버변수)
  String color;
  boolean power;
  int channel;
  
  // Tv's methods
  void power() { power = !power; }
  void channelDown() { --channel; }
}

객체배열

Tv[] tvArr = new Tv[3]; // 참조변수 배열

객체배열을 생성하는 것은 그저 객체를 다루기 위한 참조변수들이 만들어진 것일 뿐 실제 Tv 인스턴스가 만들어진 것은 아니다. 객체를 생성(new Tv();)해서 따로 배열안에 넣어주어야 위 코드에서 생성된 참조변수들이 객체를 가리키게 된다.

클래스의 정의

1. 데이터와 함수의 결합

자바의 클래스에는 서로 관계가 깊은 변수들을 하나로 묶어놓은 구조체와 이에 대한 작업을 수행하는 함수들을 함께 정의한 것이 클래스이다.

2. 사용자 정의 타입

서로 관련된 변수들을 묶어 하나의 타입으로 새로 추가하는 것을 사용자 정의 타입이라고 한다. 객체지향 언어에서는 클래스가 곧 사용자 정의 타입이다. 서로 관련된 값들을 묶을 수 있다는 점에서 유지보수에 용이하고 관리하기가 쉬워진다.

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

클래스 변수