Java - 기본기

14. 객체 지향 언어란? 클래스와 객체(개념편)

TerianP 2021. 10. 17.
728x90

1. 객체 지향 언어

  • '80년 초 소프트웨어의 위기 - 기존 언어(ex. C언어) 빠른 변화를 못 쫓아감 → 해결책으로 객체지향 언어를 도입(절차적 → 객체지향)
  • 코드의 재사용성이 높고, 유지보수가 용이, 중복 코드 제거
  • 객체지향 언어 = 기존 프로그래밍 언어 + 객체지향 개념 & 규칙

 

2. 객체 지향 언어(OOP) : 4대 핵심 개념(자세한 내용은 다음에 좀 더 작성해두도록 하겠다)

※ 참고로 아래 4대 개념은 엄청!!!! 중요함과 동시에 정보처리기사 필기 시험 단골 출제 문제입니다.

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

 

3. 객체 지향 개념 공부 방법(공부 커리큘럼)

  • 개념과 규칙들을 당장 이해하는 것보다는 우선 외워서 기억하기
  • 객체 지향의 기초 개념 : 자바의 정석 기초편 6장 & 7장 - 클래스와 객체, 객체 생성&사용, 객체 배열, 메서드 정의 & 호출 return문 반환값, 기본형 매개변수, 오버로딩 오버라이딩, 생성자, 기본 생성자 , 변수 초기화, 멤버변수 초기화
  • 객체 지향의 기초 개념들에 대해서 공부가 어느 정도 끝나면 안드로이드 앱 만들기, Spring 을 통한 웹 페이지 만들기 등 실습 하면서 공부
  • 이후 실습하면서 디자인 패턴 & 객체 지향 개념 책 더 공부

 

4. 클래스와 객체

  • 클래스의 정의 : 클래스란 객체를 정의해 놓은 것
  • 클래스의 요도 : 객체를 생성하는데 사용
  • 쉽게 생각하자면 클래스란 객체의 설계도! 객체는 설계도(클래스)를 통해 생성된 제품!
  • 클래스 - 객체 : TV 설계도 - TV , 붕어빵 기계 - 붕어빵

 

5. 객체의 구성 요소 - 속성과 기능

  • 시작은 실제 세계를 어떻게 컴퓨터에 옮길 수 있을까? 라는 의문에서 시작
  • 즉, 현실 세계의 HW를(ex. TV, 모니터, 핸드폰, 게임기, 냉장고) 를 어떻게 컴퓨터 안으로 끌어들여와 SW(프로그램, 코드)로 바꿀 수 있을까 라는 것
  • 여기서 HW 인 TV 의 속성과 기능을 생각해보자면,
    • 속성 : 크기, 길이, 높이, 색상, 볼륨, 해상도, 채널 등
    • 기능 : 켜기, 끄기, 볼륨 조절, 채널 변경
  • 쉽게 생각하자면 클래스의 특징(속성)과 기능을 정의하는 것
class Tv{
	// 속성 정의
	String color; 
	boolean power;
	int channel;
	String display;
	
	// 기능 정의
	void power() {
		power = !power;
	}
	
	void channelUp(){
		channel++;
	}
	
	void channelDown() {
		channel--;
	}
}

 

6. 객체와 인스턴스

  • 객체 : 모든 인스턴스를 댚하는 일반적 용어 ⇒ Tv 객체 = Tv 인스턴스
  • 인스턴스 : 특정 클래스로부터 생성된 객체(ex. Tv인스턴스)
  • 쉽게 생각하자면 클래스(설계도)를 통해서 직접적인 제품(객체, 인스턴스)를 생성 가능.
  • 추가로 클래스를 통해 생성된 인스턴스에 대해 속성을 정의하고 기능 사용 가능

 


여기까지해서 한번 정리하겠습니다!

 

Q. 클래스가 왜 필요한가?

A. 객체를 생성하기 위해서. 즉, 내가 설계도를 다시 만드는 작업을 할 필요가 없이 미리 설계해둔 클래스를 통해서 편하게 여러번 객체를 생성하고, 조금씩 속성(색깔, 채널 등)을 다르게 해서 만들 수 있다.

 

Q. 객체가 왜 필요한가?

A. 객체를 사용하기 위해서. 이는 내가 TV 를 만들어 사용할때 기존에 있는 클래스를 사용하여 편하게 해당 기능과 속성을 사용하기 위해서 이다.

 

Q. 객체를 사용한다는 것은?

A. 객체(정확히는 해당 객체가 생성되기 위한 클래스의)가 가진 속성과 기능을 사용하는 것. 이때 경우에 따라 무조건 기존의 클래스의 것을 따라야하는 것은 아니고, 객체를 생성하면서 아래처럼 조금씩 변경해서 사용도 가능하다.

// 동일한 Tv 클래스로부터 아래처럼 다양하게 티비 객체를 생성 가능하다.

		Tv tv_a = new Tv(); // A사 티비 객체를 생성

		tv_a.color = "red"; // 색상은 빨강
		tv_a.display = "UHD"; // 해상도 UHD
		
		System.out.println("S사 TV 색깔 : "+tv_a.color);
		System.out.println("S사 TV 해상도 : "+tv_a.display);
		
		Tv tv_b = new Tv(); // B사 티비 객체를 생성
		tv_b.color = "Blue"; // 색상은 파랑
		tv_b.display = "QHD"; // 해상도 QHD
		
		System.out.println("L사 TV 색깔 : "+tv_b.color);
		System.out.println("L사 TV 해상도 : "+tv_b.display);


// 출력
A사 TV 색깔 : red
A사 TV 해상도 : UHD
B사 TV 색깔 : Blue
B사 TV 해상도 : QHD

댓글