키보드워리어

【자바】객체지향 프로그래밍 본문

JAVA/입문

【자바】객체지향 프로그래밍

꽉 쥔 주먹속에 안경닦이 2022. 11. 5. 16:38
728x90

안녕하세요 【키보드 워리어】

 

⌨🗡🧑


블로그 방문자 여러분, 안경닦이입니다.

 

구조적 프로그래밍과 객체지향 프로그래밍의 차이점에 대해 살펴보고

객체의 측면에서 생각하는 법을 살펴보겠습니다.

 


 

개요

 

구조적 프로그래밍이나 절차적 프로그래밍에서의 사고방식은 객체지향 프로그래밍 사고방식과 완전히 다릅니다.

객체지향 프로그래밍에서는 다음의 생각할 문제들이 있습니다.

 

  • 오브젝트(Object)의 관하여
  • 클래스(Class)이란?
  • 데이터란? - Data(상태)
  • 동작하는 법(behavior)
  • 캡슐화
  • 추상화

 

 

스텝 01 - 객체 지향 프로그래밍 소개 - 기초

구조적 프로그래밍과 객체지향 프로그래밍

 

대표적인 구조적(절차적) 프로그래밍은 C언어나 파스칼 언어입니다. 이것들은 절차 중심입니다. (메소드와 함수)

 

예를 들어 여행을 가는 계획을 짜 본다면 절차 중심의 사고는 이렇게 움직이죠

절차 중심에서 사고: 공항에 가서 뭘 하고 -> 수화물은 어떤 기준으로 하고 -> 출발시간은 ~시이다.

 

 

이와 반대로 객체지향 프로그래밍은 새로운 사고방식을 갖습니다.

 

 

객체지향은 문제와 관련된 다양한 객체들을 중점적으로 데이터와 데이터가 할 수 있는 것이 무엇인지 살펴봅니다.

 

 

객체 중심에서 사고: 비행기, 승무원, 탑승객, 공항, 택시 등 여러 객체들을 생각합니다.

연관된 객체들이 확인되었으면 이 중에서 내가 사용하고자 하는 것이 무엇인지 확인하는 것입니다.

 

 

 

생각해보기!

비행기

airline, how to make, type ….

takeoff(), land(), cruise() ….

 

What is object?

What does it has data?

What they do that?

 

객체 지향 프로그래밍 소개 - 용어 - Class, Object

클래스와 오브젝트

 

 

클래스는 템플릿(견본)이며 오브젝트(객체)는 클래스의 인스턴스입니다.

 

사람 클래스의 인스턴스에는 "마하트마 간디", "이순신", "세종대왕", "데이비드 베컴"같은 객체가 있고

사람 클래스변수와 메소드로 각 객체와 연관된 속성 및 인스턴스를 규정합니다.

 

예를 들어 마하트마 간디, 이순신은 사람 클래스에 해당하지만 해당 클래스의 속성에 다른 값을 가지고 있을 수 있는 거죠.

 

 

Class Planet{

Name, location,distanceFromSun,

revolve(),rotate()

}


Planet earth = new Planet();  
Planet venus = new Planet();

 

위 코드를 보시면 지구와 금성은 같은 클래스 Planet을 쓰지만 각각의 다른 값을 가지고 있어요.

여기서 이름, 위치, 태양과의 거리는 멤버 변수(또는 필드, 상태 statement라 불림)로 가지고 있고

자전, 공전 등은 특정 동작으로 갖는 메소드라고 할 수 있습니다.

 

 

Motor Bike 자바 클래스와 몇 가지 객체를 만들어보세요.

 

객체(오브젝트), 상태(변수), 동작(메소드)같은 이론을 어떻게 적용(인스턴스)하는지만 살펴보고 다음 포스팅에서는

추상화와 캡슐화의 기본에 대해 살펴보겠습니다.

 

 

MotorBike와 MotorBikeRunner클래스 생성해보고 

MotorBikeRunner 클래스에서 MortorBike를 인스턴스 해서 ducati와 honda라는 객체를 생성해볼게요.

 

 

참고로 낙타 대문자 계속 사용하되, 클래스는 대문자, 메소드는 소문자로 시작하는 것이 관례입니다. *객체 클래스  소문자시작

 

public class MotorBike {
	/* state, 상태,변수라 불림 */
	int speed; // member variable
    

	/* behavior, 동작, 메서드라 불림 */
 	void start() { 
		System.out.println("bike started");
	};

	void stop() {
		System.out.println("bike stoped");
	};
}

 

MotorBike와 MotorBikeRunner클래스 생성

 

MotorBikeRunner클래스에서

객체의 start와 stop 메소드를 만들고 실행시켜볼게요

 

객체의 start와 stop 메소드를 만들고 실행

 

실행이 되면 'bike started'문구가 뜨는 간단한 메소드(동작)입니다.

 

start 메소드 실행화면
객체지향프로그래밍 실행화면예시

자바를 이제 막 배우시는 입장이니 일단 변수는 객체의 상태(필드)를 나타낸다고 생각하는 편이 좋습니다.

 

위 그림처럼 ducati와 honda 객체 클래스는 고유의 speed변수를 가지고 있다는 것과 서로 독립되어 있으며

각각 여기서 특정 변수(speed)의 사본을 갖는다는 것을 알 수 있습니다.

 

그리고 상태가 프로그램의 진행에 따른 변화를 가지며 메모리에서는 서로 독립된 그릇(motorbike 템플릿)에

인스턴스 된 상태들이 들어갑니다.

728x90