프로그래밍 study/JAVA_101

CH7. Class(feat. 객체지향 oop)

박재완 2022. 3. 29. 19:00
728x90
반응형

객체 지향이란?

객체지향 프로그래밍(Object-Oriented Programming:oop)은 객체를 기반으로 하는 프로그램으로 객체가 주체가 되어 프로그래밍을 한다로 생각하면 편하다.
보통 c언어를 절차 지향이라고 하게 되는데 이와 비교 해보면 객체 지향의 의미보단 그 차이를 중점적으로 확인 할 수 있을것이다.

절차 지향의 경우 절차를 기반으로 실행하는 프로그램을 의미한다. 그 예시는 다음 아래 그림을 통해서 확인 할 수 있다.


행동(Action)의 발생 순서가 시간에 따라 순서대로 진행 된다.
절차 지향에서는 학교에 도착해서 버스를 타고, 요금을 지불 하는 사건은 발생할 수 없는 것이다.

반면에 객체 지향 프로그래밍에서는 객체를 정의 하고 객체간의 협력을 프로그램을 하는 것으로 위 그림을 객체로 분류 해본다면
학생 , 밥, 버스, 학교 등이 객체 Object로 선언 될 수 있다.
그에 따른 행동(Action)은 먹는다, 간다, 탄다 가 이뤄 지며 이를 그림으로 표현해보면 다음과 같이 표현 될 수 있다.

학생이라는 객체는 다른 객체들과 행동으로 서로 관계가 이어져 있는 것을 확인 할 수 있다.

이를 통해서 절차 지향 프로그래밍 에서 중요시 하는 시간 순서는 행동의 순서로 정의 할 수 있고 좀더 발생 순위에 신경 쓰지 않고 각 객체간의 관계만 중요시 하며 유연한 프로그래밍을 진행 할 수 있어 등장하게 되었다.

그러한 개념속에서 대표적으로 등장 하는 것중 하나가 오늘 다뤄볼 클래스(class)이다.

 

클래스란?

클래스를 이해 하기 위해서는 아래와 같은 상황을 생각 해보면 클래스의 기능에 대해서 쉽게 접근 할 수 있다.

 

 

학생의 객체에 필요한 변수들을 생각해보자.

학번

이름

학년

사는곳

 

이런식으로 다양한 변수들이 필요할 것이다.

하지만 이런 학생이 한명 에서 열명 정도라고 보았을때 이런 작업을 각각 해줘야 한다면 할 수 있겠지만 보통 전교생이 100명은 기본 넘어간다고 보면.. 업무 강도가 심각하게 증가 할 것이다.

 

이러한 문제점에서 클래스의 기능이 진가를 보인다. 각각 학생들에게는 공통적인 사항들 이 존재한다. 수치의 차이는 있을지 몰라도 학번, 이름, 학년, 사는 곳이 대표적인 그 예시이다.

A학생(객체)에게 공통된 등록 정보인 class의 내부 변수로써 등록하여 각 학생들의 정보를 쉽고 빠르게 다양한 학생들에게 필요한 내부 변수 또는 메소드 함수 등을 등록 할 수 있게 된다.

이를 멤버 변수 또는 멤버 메소드 라고 부른다.

 

다음과 같이 java에서 class를 선언 하게 되면 이렇게 사용할 수 있다.

이렇게 손쉽게 하나의 객체에 다양한 변수 속성 및 메서드 추가가 가능해진다.

 

설명한 것들을 클래스를 프로그래밍 언어로 다시 본다면...

클래스(class)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다. 객체를 정의 하기 위한 상태(멤버변수)와 메서드(함수)로 구성된다. 

객체는 클래스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다. 클래스는 전부 혹은 일부를 그 클래스 특성으로부터 상속 받는 서브클래스를 가질 수 있으며, 클래스는 각 서브클래스에 대해 수퍼클래스 가 된다.

 

이는 c++에서 나온 것으로 추후 c++ 공부를 정리하면서 재등장 할 예정이다.

 

 

+ 클래스는 절차지향의 대표언어인 c언어의 구조체와 큰 차이를 가지고 있다.(저장 방식, 접근 방식등 등)

이와 관련되서는 c언어 구조체 까지 공부하게 된다면 등장할 예정이다.

 

 

728x90
반응형

'프로그래밍 study > JAVA_101' 카테고리의 다른 글

CH3.java 조건문  (0) 2022.04.11
CH2. java 콘솔 출력  (0) 2022.03.31
CH1. 변수 선언  (0) 2022.03.30
CH0. JAVA 설치 및 테스트  (0) 2022.03.23