JAVA101

준비중..

JAVA101

자바 프로그래밍 입문

10 클래스와 객체

# 클래스와 객체 우리는 **Part 1**에서 자바의 기본 문법에 대한 내용을 배웠습니다. 이를 토대로 이번 **Part 2**에서는 객체지향 프로그래밍에 대한 내용을 배워보도록 할까요? ![클라우드스터딩-자바-학습-로드맵](https://i.imgur.com/ZRwHE2i.png) ## 목차 1. 객체지향 프로그래밍의 이점 2. 클래스와 객체 3. 클래스 구조 및 설계 4. 클래스 구현하기 ## 1. 객체지향 프로그래밍의 이점 --- 객체지향 프로그래밍! 간단히 OOP라고들 하는데요. 자바를 배우기 시작하면서 언급했던 기억이 납니다. 뭐였습니까? 맞습니다. *객체를 조립하여 전체 프로그램을 만드는 것*이었습니다. ![클라우드스터딩-자바-객체지향-자전거-예](https://i.imgur.com/2rQQjSb.gif) 그런데 왜 쓰죠? OOP의 장점들. 기억나시나요? 자전거의 예를 다시 한 번 떠올려봅시다. 쉽게 조립할 수 있게, 다시 말해 객체 지향적으로 자전거(프로그램)를 만들면 유지 보수성, 재사용성, 확장성과 같은 다양한 이점을 얻을 수 있었습니다. ![클라우드스터딩-자바-객체지향-이점-장점-강점](https://i.imgur.com/kmxdGMY.png) 먼저 유지 **보수성**(maintenance)이란, '지속적인 상태 관리가 얼마나 편한가?'에 대한 정도인데요. 가령 브레이크가 고장 났다 합시다. 부품의 조립이 쉽다면, 다시 말해 객체 지향적으로 잘 만들어져있다면, 문제없이 새 브레이크로 교체해주면 되겠죠? 다음으로 **재사용성**(reusability)이란, 하나의 객체를 다양한 곳에서 활용할 수 있는 정도입니다. 자전거 안장을 더 좋은 것으로 교체하고, 기존에 안장을 동생 자전거에서 사용하는 경우를 예로 들 수 있겠네요. 마지막 **확장성**(extensibility)이란, 기존의 것을 더욱 확장 시킬 수 있는 정도입니다. 짐 바구니를 자전거에 달려 할 때, 객체 지향적 자전거는 더욱 쉽게 이를 확장할 수 있는 거죠. 그렇다면 이러한 이점들을 얻기 위해 우리는 먼저 무엇을 알아야 할까요? 정답은 바로 클래스가 되겠습니다. ## 2. 클래스와 객체 --- 클래스란, *객체를 만들기 위한 설계도*입니다. 자전거를 만들려면 먼저 각각의 부품이 필요한데요. 각각의 부품을 만들기 위해서는, 먼저 부품별 설계도가 필요합니다. 마찬가지로 하나의 프로그램을 만들기 위해 각각의 객체가 필요하고, 이 객체들 또한 개별적 클래스가 있어야 존재할 수 있는 거죠. ![클라우드스터딩-자바-클래스와-객체-그리고-프로그램](https://i.imgur.com/ZMd8dzR.png) 따라서 *좋은 프로그램을 만든다는 것은, 잘 설계된 클래스를 만드는 것*이라 할 수 있습니다. 그렇다면 좋은 프로그램을 만들기 위해 클래스에 관한 내용을 조금 더 자세히 알아보도록 할까요? ## 3. 클래스 구조 및 설계 --- 클래스는 크게 필드와 메소드로 나뉩니다. 필드는 객체의 상태를, 메소드는 객체의 기능을 정의하죠. 아래 그림은 자전거를 클래스로 설계한 예입니다. ![클라우드스터딩-자바-클래스-구조-필드-메소드](https://i.imgur.com/gTKon8u.png) 위 자전거 클래스는 이름, 무게, 가격을 필드(상태)로 가지고 있네요. 메소드(동작)로는 이동하기와 경적 울리기 기능이 가능하도록 설계되었습니다. > 클래스를 도식화하여 설계한 것을 **클래스 다이어그램**이라 합니다. ## 4. 클래스 구현하기 --- 위에서 설계한 자전거 클래스를 실제 코드로 만들려면 어떻게 해야할까요? 어렵지 않습니다. 아래 주석 순서에 맞게 코드를 작성하면 되겠습니다. 특별히 메소드에 `static` 키워드가 없다는 것을 주의하세요. ``` /* 1. 클래스 작성 */ public class Bicycle { /* 2. 필드 추가 */ String name; double weight; int price; /* 3. 메소드 추가 */ public void move() { System.out.println("자전거를 타고 이동 합니다~"); } public void horn() { System.out.println("따르릉~! 비켜주세요~"); } } ``` ## 요약 --- #### OOP - 객체지향 프로그래밍(OOP)은 객체를 조립하여 전체 프로그램을 만드는 것이다. - OOP는 유지 보수성, 재사용성, 확장성이라는 장점이 있다. #### 클래스 - 클래스는 객체를 만들기 위한 설계도이다. - 필드는 객체의 상태를, 메소드는 객체의 동작을 정의한다. #### 클래스 다이어그램 - 클래스 다이어그램이란, 클래스를 그림으로 만든 것이다. - 클래스 다이어그램을 코드로 구현할 수 있다. ## 확인하기 --- <div class="interact_responsive_padding" style="padding:100% 0 0 0;position:relative;margin-bottom:5px;"><div class="interact_responsive_wrapper" style="height:100%;left:0;position:absolute;top:0;width:100%;"><iframe id="interactApp5cd8f4e837db5b001485a8c8" width="100%" height="100%" style="border:none;max-width:100%;margin:0;" allowTransparency="true" frameborder="0" src="https://quiz.tryinteract.com/#/5cd8f4e837db5b001485a8c8/q/1?method=iframe"></iframe></div></div>