본문 바로가기
멀티캠퍼스 풀스택 과정/Java의 정석

자바의정석2-1 객체지향의 개념

by 이쟝 2021. 12. 30.

객체지향 언어(Object-Oriented-Programing)

‘80년 초 소프트웨어의 위기 빠른 변화를 못 쫓아감 -> 해결책으로 객체지향 언어를 도입(절차적 -> 객체지향)

코드의 재사용성이 높고 유지보수가 용이, 중복 코드 제거

객체지향 언어 = 프로그래밍 언어 + 객체지향개념(규칙)

 

객체지향언어의 핵심개념

1) 캡슐화 2) 상속  3)추상화 4) 다형성

 


클래스와 객체

클래스는 객체를 정의해 놓은 것이고 클래스의 용도는 객체를 생성하는데 사용

객체란 실제로 존재하고 있는 것. 사물 또는 개념 객체의 용도는 객체가 가지고 있는 기능과 속성에 따라 다름

 

클래스 객체
제품 설계도 제품
TV 설계도 TV

 

-> 쉽게 클래스는 설계도 객체는 제품으로 생각하기!

 

- 객체지향 개념은 처음에는 군사적인 목적으로 시작했음

- 실제세계(하드웨어)를 소프트웨어화 시켜서 컴퓨터 안에서 작동이 되게 하고 싶어서 실제 세계를 분석과 관찰함(예, 미사일을 쏘기전에 미리 컴퓨터안에서 가상으로 작동시켜봄)

- 하드웨어 -> 소프트웨어 하려면 실제 세계를 분석&관찰해야 함

- 소프트웨어화 => 프로그램(코드)을 만든다.

 

객체 = 속성(변수) + 기능(메서드) --> 사물(객체)은 속성과 기능으로 이루어져 있음

 

객체 속성 기능
TV 크기, 길이, 높이, 색상, 볼륨, 채널 등 켜기, 끄기, 볼륨 높이기와 낮추기, 채널 변경하기 등

 

TV( 하드웨어)를 소프트웨어화 시킴(TV클래스(설계도)를 생성)


객체와 인스턴스

객체: 모든 인스턴스를 대표하는 일반적 용어

인스턴스: 특정 클래스로부터 생성된 객체(:TV인스턴스)

-> 객체 == 인스턴스

 

 

- 설계도 --> 제품 / 설계도를 제품으로 만드는 것 == 인스턴스화(제품 생성)

- 클래스로부터 객체를 만드는 것 -> 인스턴스화

 

Tv클래스로 부터 생성된 객체(제품) 변수 3개 메소드 3개로 구성  

 

클래스(설계도)필요한 이유: 객체(제품)를 생성하기 위해서

객체(제품)필요한 이유: 객체(제품)를 사용하기 위해서

객체(제품)사용한다는 의미: 객체(제품)가 가진 속성(변수)과 기능(메서드)을 사용하는 것


하나의 소스파일에 여러 클래스 작성

 

올바른예
잘못된 예

-> 하나의 소스파일에는 하나의 클래스만 작성하는 것이 바람직함

-> 소스파일의 이름public class이름과 일치

-> 하나의 소스파일에는 하나의 public class만 허용

-> 소스파일이름메인 메소드가 들어있는 클래스와 이름이 일치해야 함(그래야 컴파일 가능)


클래스의 정의(2)

클래스의 정의 -> 1) 설계도 2) 데이터와 함수의 결합 3) 사용자 정의 타입

클래스 == 데이터 + 함수

 

1. 변수 하나의 데이터를 저장할 수 있는 공간

2. 배열 같은 종류의 여러 테이터를 하나로 저장할 수 있는 공간 (같은 타입만 ex int배열은 int 타입만)

3. 구조체 서로 관련된 여러 데이터(종류 관계 상관 x)를 하나로 저장할 수 있는 공간(다른 타입도 가능)

4. 클래스 데이터와 함수의 결합(구조체 + 함수(명령문 묶음)) -> 서로 관련이 있기 때문에 묶을 수 있음

 

클래스의 정의(3)

클래스의 정의 -> 1) 설게도 2) 데이터와 함수의 결합 3) 사용자 정의 타입

사용자 정의 타입 원하는 타입을 직접 만들 수 있다.

 

예) 시간으로 묶은 Time 클래스 생성! Time t = new Time(  );
int hour = 12;  t.hour = 12;
int minute = 34;  t.minute  = 34;
int second = 56; t.second = 56;
-> 비객체 지향적 -> 객체 지향적