일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 난이제지쳤어요
- 자바
- 괴담출근
- 데못죽
- 깜지곰
- 쿠키런킹덤
- JavaFx
- 푸린
- 이디야
- 버킷
- 프세카
- 프로세카
- 포켓몬
- server.properties
- 서버_설정
- rizline
- 빠모
- oracleDB
- java
- minecraft
- 멍청력
- 테스타
- 땡벌땡벌
- 뵤세가나라다
- 쿠킹덤
- SceneBuilder
- 마인크래프트
- eclipse
- 서버
- 폰트바꾸기
- Today
- Total
half✨
# 11. 객체 지향 프로그래밍, 클래스에 대해 알아보자! 본문
안녕하세요! 하프입니다😋
저번 글(#10)까지는 자바의 기본 문법에 대해 배웠다면 이번 글부터는 자바를 객체 지향 프로그램 언어로써 사용할 수 있도록 객체 지향 프로그래밍과 클래스에 대해서 알아보려고 합니다!
이 글은 <Do it! 자바 프로그래밍 입문> 책을 읽고 이해한 내용을 바탕으로 작성되었습니다😉
1. 객체는 뭔가요?
객체는 국어 사전에서 '의사나 행위가 미치는 대상'이라는 뜻을 찾아볼 수 있습니다. 눈에 보이는 사물은 모두 객체로 생각할 수 있습니다! 사람, 키보드, 볼펜 등 많은 것들이 객체가 될 수 있다는 것이죠! 이뿐만 아니라 주문, 생산, 관리 등 눈에 보이지 않지만 어떤 행동을 나타내는 단어 또한 객체가 될 수 있습니다. 자바는 객체를 기반으로 하는 객체 지향 프로그램 언어입니다. 책에서는 객체 지향 프로그램을 '어떤 대상(객체)을 가지고 프로그래밍한다.'라는 개념으로 표현하고 있어요!
생활 속에서 객체를 찾아볼까요? 아침에 일어나 학교에 가는 상황에서 객체를 찾아봅시다. 우선 학교에 도착하기까지의 과정을 나타내볼게요!
아침에 일어난다 → 씻는다 → 밥을 먹는다 → 버스를 탄다 → 요금을 지불한다 → 학교에 도착한다. 정도가 되는데, 이렇게 순서대로 일어나는 일을 시간순으로 프로그래밍하는 것은 '절차 지향 프로그래밍' 이라고 합니다! 대표적으로는 C언어가 있습니다. 하지만 우리가 공부하고 있는 자바는 객체 지향 프로그래밍이죠!
객체 지향 프로그래밍은 객체를 정의한 뒤에 객체 간의 협력을 프로그래밍하는 것입니다. 위의 상황에서 객체를 찾아보면 학생, 밥, 버스, 학교 등이 있겠네요! 여기서 객체 간의 협력은 '학생'이 '밥'을 먹는 행동, '학생'이 '버스'에 타는 행동 등을 나타냅니다. 이렇게 객체 지향 프로그래밍은 객체를 먼저 만들고, 객체 사이에서 일어나는 일을 구현하는 것입니다.
2. 클래스가 뭔가요?
객체에 대해서 간단히 알아보았는데요, 그럼 클래스는 뭘까요? 교실클래스는 객체의 속성이나 기능을 코드로 구현하는 것입니다. 객체를 클래스로 구현하는 것을 '클래스를 정의한다'라고 하는데요, 클래스를 정의하기 위해서는 클래스의 이름과 클래스가 가지는 속성, 특성이 필요합니다. 글로만 보면 감이 잘 오지 않을 테니 예제를 통해 알아봅시다😆
우선 학생 객체를 표현할 이름이 필요한데요, 프로그래밍에서는 한글을 사용할 수 없으니 Student라는 이름을 붙여줍시다! 그리고 학생 객체가 가지는 속성을 생각해야 하는데요, 학번, 이름, 학년, 사는 곳 등이 있습니다. 이런 클래스의 속성은 '특성'이라고도 하고, 클래스 내부에 변수로 선언합니다. 이렇게 선언하는 클래스의 속성을 멤버 변수라고 부릅니다! 😍
(접근 제어자) class 클래스 이름 {
멤버 변수;
메소드;
}
클래스를 정의하는 형식입니다. 이클립스 등에서 클래스를 만들면 클래스 앞에 자동으로 public이 붙는데요, 이 부분을 접근 제어자라고 합니다. public 클래스인 경우에는 클래스의 이름과 자바 파일의 이름이 같아야 합니다! 접근 제어자는 나중에 글로 자세히 다뤄보도록 하겠습니다. 😊
이클립스로 Student 클래스를 만들었습니다. 클래스를 만들 때는 class 예약어를 사용하고, 만든 클래스의 이름은 Student입니다. 클래스 이름은 대문자로 시작해야 하는데요, 소문자로 시작한다고 해서 오류가 발생하진 않지만 개발자들 사이에서 클래스의 이름은 대문자로 시작하자고 규칙을 정했습니다!
중괄호( { } ) 안에는 클래스의 내용을 구현하는데요, 학생이라는 객체의 속성 중 프로그램에서 사용할 속성을 변수로 선언합니다. 자바 프로그램은 모든 요소가 클래스 내부에 있어야 합니다. 클래스 외부에는 package 선언이나 import 문장 외에는 아무것도 선언하지 않습니다!
3. 클래스를 살펴봅시다!
public class Student {
int studentID; // 학번
String studentName; // 이름
int grade; // 학년
String address; // 사는 곳
}
Student 클래스를 자세히 살펴볼까요? Student 클래스에는 학생 객체가 가지는 속성들을 변수로 선언했는데요, 이렇게 클래스 내부에 선언하여 객체 속성을 나타내는 변수가 멤버 변수입니다. 멤버 변수는 속성에 따라 알맞은 자료형으로 선언해주세요! 참고로 String형은 문자열을 표현하는 자료형입니다.
클래스에 대해서 알아보았으니 이번에는 클래스를 직접 선언해봅시다! 사람 객체를 구현하는 Person 클래스를 만들어볼까요?
Person 클래스를 선언했습니다. 사람이 가지는 속성을 알맞은 자료형으로 표현하는 게 중요해요!
4. 클래스 기능은 어떻게 구현하나요?
지금까지는 클래스에 멤버 변수를 선언했는데요, 클래스에서는 객체가 가지는 속성을 사용해서 그 객체와 관련된 기능을 구현할 수 있습니다. 이렇게 클래스 내부에서 멤버 변수를 사용하여 클래스의 기능을 구현하는 것이 메소드입니다. 예제를 통해 메소드를 살펴볼게요!
Student 클래스 안에 showStudentInfo() 메소드를 추가했습니다! 이 메소드는 학생의 이름과 주소를 출력하는 기능인데요, 메소드 구현과 사용에 대한 자세한 내용은 다음 글에서 다뤄보도록 하겠습니다!
5. 패키지는 뭔가요?
패키지란 클래스 파일의 묶음이라고 할 수 있는데, 패키지를 만들면 프로젝트 하위에 물리적으로 디렉터리가 생성됩니다. 패키지는 계층 구조를 가질 수 있는데요, 전체 프로젝트의 소스 코드를 어떻게 관리할지와 관련되어 있습니다!
학교와 관련된 프로젝트를 수행할 때, 프로젝트는 학생, 과목, 교실 등의 클래스를 만들 수 있습니다. 그러한 클래스와 협력하는 다른 클래스들도 있겠구요! 학생 정보를 가져오는 클래스, 학생의 학점 등을 등록하고 관리하는 코드 등을 패키지로 관리할 수 있습니다!
패키지는 이렇게 맨 위에 선언합니다! 이클립스에서는 처음 클래스를 만들면 프로젝트와 같은 이름으로 패키지가 생성됩니다.
지금까지 자바의 클래스에 대해서 알아봤는데요, 클래스는 자바 프로그래밍의 기본이 되는 부분이다 보니 어떻게 설명해야 이해가 잘 되는지 고민을 많이 했습니다... 아직 제 글쓰기 능력이 부족해서 이해가 되실진 모르겠지만😢 다음 글에서는 메소드에 대해서 자세히 알아보도록 할게요!
'개발 > Java' 카테고리의 다른 글
#13. 클래스와 인스턴스에 대해 알아보자! (0) | 2022.12.29 |
---|---|
#12. 함수와 메소드에 대해 알아보자! (0) | 2022.12.06 |
#10. 순서도에 대해 알아보자! (0) | 2022.11.18 |
#9. Java의 반복문에 대해 알아보자! (0) | 2022.11.15 |
#8. Java의 조건문에 대해 알아보자! (0) | 2022.11.12 |