[Java] 클래스와 객체 - 객체지향 프로그래밍과 클래스

나영원·2020년 8월 24일
1

Java_basic

목록 보기
21/60

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 classclass안에 한 개만 작성할 수 있습니다.
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메소드를 작성하고 실행을 해보면 결과 값이 나오는 것을 확인할 수 있습니다.

profile
배우는 개발 일기

0개의 댓글