객체 지향 프로그래밍(OOP)는 자바에서 기본적으로 다루는 중요한 개념이다.
객체 지향에서는 클래스를 중심으로 프로그램을 설계하며, 클래스는 객체를 만들기 위한 설계도 역할을 한다.
클래스가 무엇인지, 객체 지향 프로그래밍에서 클래스의 역할은 무엇인지, 그리고 객체 지향의 기본 개념들에 대해 정리해보자.
객체 지향 프로그래밍이란?
객체 지향 프로그래밍(OOP, Object-Oriented Programming)은 컴퓨터 프로그래밍 패러다임중 하나로,
프로그래밍에서 필요한 데이터를 *추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.
*추상화 : 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
예를 들어, 주변에 존재하는 모든 사물(자동차, 책상, 의자), 개념(수학공식, 프로그램 에러와 같은 논리) 등 모두 다 객체라고 할 수있다.
따라서 객체지향 프로그래밍이란 상태와 행위로 이루어진 객체라는 기본 단위로 나누어, 이 객체들간의 상호작용을 통해 프로그램을 설계하고 개발하는 것이다.
객체 지향 프로그래밍의 장,단점은?
장점
- 코드의 재사용성이 높다.
- 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
- 코드의 관리가 용이하다.
- 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
- 신뢰성이 높은 프로그래밍을 가능하게 한다.
- 제어자와 메서드를 이용해 데이터를 보호하고 올바른 값을 유지하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
단점
- 처리속도가 상대적으로 느리다.
- 프로그램 용량이 크다.
- 많은 구조들을 설계하다보면, 프로그램의 용량 증가로 이어진다.
- 설계에 많은 시간이 소요된다.
- 클래스별, 객체별, 상속 등 많은 구조를 설계해야하기 때문에, 많은 시간이 소모된다.
객체(Object)란?
객체의 사전적인 의미는 '실제로 존재하는 것'이다. 예를 들어 우리가 주변에서 볼 수 있는 책상, 의자, 자동차와 같은 사물들이 곧 객체이다.
프로그래밍에서의 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는것 중 "자신의 속성"을 가지고 있으며 "식별 가능한 기능"을 의미한다.
객체의 정의 : 실제로 존재하는 것. 사물 또는 개념
객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름
유형의 객체 : 책상, 의자, 자동차, TV와 같은 사물
무형의 객체 : 수학공식, 프로그램 에러와 같은 논리나 개념
객체의 구성요소 - 속성과 기능
객체는 속성과 기능 두 종류의 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 기능을 갖는다.
즉 객체는 속성과 기능의 집합이라고 할 수있다. 그리고 객체가 가지고 있는 속성과 기능을 그 객체의 멤버라고 한다.
객체의 속성과 기능의 용어를 자바에서는 '속성' = '멤버변수', '기능' = '메서드'라고 사용한다.
TV로 속성과 기능 예를 들어보자
속성 : 크기, 길이, 높이, 색상, 볼륨, 채널 등
기능 : 켜기, 끄기, 볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등
TV의 속성은 멤버변수가 되는것이고, TV의 기능은 TV 메서드가 되는 것이다.
실제 TV가 갖는 기능과 속성은 이 외에도 더 있지만, 프로그래밍에 필요한 속성과 기능만 선택하여 클래스를 작성하면 된다.
클래스(Class)란?
클래스란 '객체를 정의해놓은 것'이다. 쉽게 말해서 '객체의 설계도 또는 틀'이라고 생각하면 된다.
클래스는 객체를 생성하는데 사용되며, 객체는 클래스에 정의된 대로 생성된다.
클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다.
클래스의 용도 : 클래스는 객체를 생성하는데 사용된다.
클래스와 객체는 쉽게 말해 제품 설계도와 제품의 관계라고 생각하면 된다.
예를 들어 TV설계도(클래스)는 TV라는 제품(객체)을 정의한 것이며, TV(객체)를 만드는데 사용된다.
클래스는 객체를 생성하는데 사용된다고 했지만, 그 뿐 객체 그 자체는 아니다.
우리가 원하는 기능의 객체를 사용하기 위해서는 먼저 클래스로부터 객체를 생성하는 과정이 선행되어야 한다.
클래스를 정의하고 클래스를 통해 객체를 생성하는 이유
하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워지고, 제품을 만들 때마다 고민할 필요없이 설계도 대로만 만들면 되기 때문이다.
인스턴스(Instance)란?
클래스가 설계도라고 한다면, 객체는 설계도를 이용해 찍어낸 데이터라고 생각하면 된다.
또한, 클래스에 의해서 만들어진 객체를 인스턴스라고 한다.
객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있으며,
인스턴스는 어떤 클래스로부터 만들어진 것인지를 강조하는 보다 구체적인 의미를 갖고있다
인스턴스의 생성과 사용
클래스명 변수명; // 클래스의 객체를 참조하기 위한 변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 변수에 저장
클래스와 인스턴스의 예시를 Tv클래스로부터 인스턴스를 생성하고 인스턴스의 속성과 메서드를 사용하는 방법을 코드로 나타내보았다.
References
'❤️ JAVA > Basic' 카테고리의 다른 글
[JAVA] 생성자(consructor) (0) | 2024.10.17 |
---|---|
[JAVA] 필드(Field)와 메서드(method) (0) | 2024.10.16 |
[JAVA] JAVA 2주차(컬렉션) (0) | 2024.10.10 |
[JAVA] JAVA 2주차(배열) (0) | 2024.10.10 |
[JAVA] JAVA 2주차(연산자,조건문,반복문) (2) | 2024.10.10 |