Java 기초 실습을 마치고 다음 단원으로 넘어가 객체지향 프로그래밍을 배우기 위한 첫시간으로 객체지향 프로그래밍과 클래스에 대해 알아보도록 하겠습니다.
객체란?
객체 (object)
- 객체는 '의사나 행위가 미치는 대상'이라는 사전적 의미를 가지고 있습니다.
- 자바에서는 하나의 역할을 수행하는 메소드와 변수의 묶음 혹은 단위라고 볼 수 있고 클래스라는 형태로 묶이게 됩니다.
- 사람, 자동차와 같은 명사형의 객체도 있지만 주문, 생산, 관리와 같은 동사형의 객체도 존재합니다.
객체지향프로그래밍이란?
절차지향 프로그래밍과 객체지향프로그래밍
절차지향프로그래밍( Procedural Programming)
- 초기 프로그래밍 방식으로 시간이나 사건의 흐름에 따라 프로그램을 구현하는 방식입니다. 대표적으로 C언어가 있습니다.
- 학교를 가는 과정을 절자지향 프로그래밍으로 표현한다면 {일어난다 > 씻는다 > 밥을 먹는다 > 버스를 탄다> 요금을 지불한다 > 학교에 도착한다} 같이 시간에 순서대로 일어나는 일을 표현합니다.
- 프로그래밍이 복잡해짐에 따라 여러가지 절차가 시간 순서와 상관없이 교차해서 일어나는 상황을 프로그래밍하기 어렵다는 한계가 있습니다.
객체지향프로그래밍(Object Oriented Programming : OOP)
- 객체를 기반으로 하여 객체를 정의하고 객체의 기능을 구현하며 객체간의 협력(상호작용)을 통해 프로그램을 구현하는 방식입니다.
- 학교를 가는 과정을 객체지향 프로그래밍으로 표현한다면 다음 그림과 같습니다.
- 학생, 밥, 버스, 학교 같이 객체를 정의하고 학생-밥, 학생-버스 사이의 연관관계를 프로그래밍하는 것이 객체지향 프로그래밍이라고 할 수 있습니다.
- 객체간의 관계를 자유롭게 구성할 수 있기 때문에 시간순서에 상관없이 프로그램을 구현할 수 있습니다.
클래스?
- 객체라는 추상적인 개념을 코드화 한 것을 클래스라고 합니다. 객체 지향 프로그래밍의 가장 기본적인 요소로 청사진(blue print)라고도 부르기도 합니다.
- 클래스에는 객체의 속성과 기능을 표현하는 변수와 메소드를 포함합니다.
멤버변수, 메서드
멤버변수
- 클래스 안에서 선언되는 변수를 멤버 변수라고 하며 객체가 가지는 속성을 표현는데 사용됩니다.
- 예를 들어 사람이라는 객체는 나이, 성별, 직업, 키 등 여러가지 속성을 가질 수 있고 그 필요한 속성을 변수로 선언하여 사용 하는 것 입니다.
- member variable , property, attribute 으로 표현합니다.
메서드
- 객체안에서 사용하는 함수로 객체가 제공하는 기능을 구현하는데 사용합니다.
- method, member function
클래스 정의하기
클래스를 직접 정의해보며 배운내용들을 확인해 보겠습니다.
조건에 맞게 학생에 대한 클래스를 구현해 보세요.
조건
- 학생이 있습니다
- 학생은 학번, 이름, 주소 값을 가집니다.
- 학생의 정보를 보여줍니다.
- 학생에 대한 클래스를 구현해보세요
package classpart;
public class Student {
class ABCD{
}
}
- public class Student 에서 Student는 클래스명으로 .java파일명과 동일해야 합니다. Studenta라고 입력하면 오류가 발생합니다
- clas ABCD와 같이 class내에 여러 class를 만들 수 있지만 public class는 class안에 한 개만 작성할 수 있습니다.
public class Student {
public int studentID;
public String studentName;
public String address;
}
- 학생의 여러가지 속성 중 우리가 필요한 학번, 이름 주소를 변수(멤버 변수)를 선언해 줍니다.
- String은 자바에서 제공하는 클래스로 Char[]를 대체하여 문제열을 표현할때 사용합니다.
- public이란 키워드는 접근제어자라고 하며 4가지 종류가 있다고 알아두고 뒤에 더 자세히 배우도록 하겠습니다.
public void showStudentInfo(){
System.out.println(studentName +","+ address);
}
- 학생의 정보를 보여주는 기능을 표현하기 위해 showStudentInfo메서드를 작성합니다
- 메서드는 void는 결과값 자리로 현재는 결과값이 없기 때문에 void로 비우둡니다.
- showStudentInfo()는 메서드의 이름을 지정해주는 것이고 괄호안에는 매개변수(입력값)가 들어갈 수 있습니다.
클래스 사용하기
작성한 클래스를 사용하기 위해 클래스를 생성하고 클래스의 속성과 메서드를 참조해주어야 합니다.
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student();
studentLee.studentName = "이순신";
studentLee.address = "서울";
studentLee.showStudentInfo();
//결과값
이순신,서울
}
}
- Student class를 테스트하기 위한 StudentTest class를 만들고 main을 작성합니다.
- Student class를 사용하기 위해 Student studentLee = new Student(); 생성자를 작성해 class를 생성해줍니다. class를 생성을하게 되면 메모리가 할당되고 사용가능 하게 되는데 이과정에 대해서는 뒤에 더 자세히 배워 보겠습니다.
- studentLee. 을 작성하면 선택박스에 우리가 작성해놓은 변수들과 메소드가 뜨게 되는데 그것을 '참조'한다라고 합니다. 그 중 studentName과 address를 참조해 각각의 값을 대입해줍니다.
- 마지막으로 showStudentInfo메소드를 작성하고 실행을 해보면 결과 값이 나오는 것을 확인할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] 클래스와 객체 - 인스턴스, 힙 메모리 (0) | 2020.07.09 |
---|---|
[Java] 클래스와 객체 - 함수와 메서드 (0) | 2020.07.09 |
[Java] 캘린더 만들기 - 일정 등록 / 검색 기능 구현하기 (0) | 2020.07.08 |
[Java] 캘린더 만들기 - 자동으로 요일을 계산하는 달력 (0) | 2020.07.08 |
[Java] 캘린더 만들기 2 (0) | 2020.07.07 |