객체지향 프로그래밍과 클래스
메서드
Class & Instance
생성자(Constructor)
참조 자료형
객체지향 프로그래밍과 클래스
객체(Object)란?
구체적, 추상적 데이터 단위
객체지향 프로그래밍(Object Oriented Programming, OOP)
객체를 기반으로 하는 프로그래밍 ex) 학교 가는 과정에 대한 절차적 프로그래밍 일어난다. -> 씻는다. -> 밥을 먹는다. -> 버스를 탄다. -> 요금을 지불한다. -> 학교에 도착한다.
클래스(Class)란?
객체에 대한 속성과 기능을 코드로 구현한 것, "클래스를 정의한다."라고 함.
객체에 대한 청사진
객체의 속성
객체의 특성, 속성, 멤버 변수
property, attribute, member variable
객체의 기능
객체가 하는 기능들을 메소드로 구현 method, member function
클래스 정의 하기
class는 대부분 대문자로 시작하나의 Java 파일의 하나의 클래스를 두는 것이 원칙이나, 여러 개의 클래스가 같이 있는 경우 public 클래스는 단 하나이며, public 클래스와 Java 파일의 이름은 동일해야 함. Java의 모든 코드는 class 내부의 위치
// 학생 클래스 만들기
public class Student{ // class 예약어, Student 클래스 이름
int studentID; // 학번
String studentName; // 이름
int grade; // 학년
String address; // 주소
}
클래스의 속성
클래스의 속성을 나타내며, property, attribute라고도 함
자료형을 이용하여 멤버 변수를 선언
클래스의 기능
메서드(method)로 구현
멤버 함수(member function)라고도 함
객체가 수행하는 기능을 구현
//메서드 추가
public void showStudentInfo(){
System.out.println(studentName + "," + address); // 이름, 주소 출력
}
메서드
함수의 일종
객체의 기능을 제공하기 위해 클래스 내부에 구현되는 함수
함수란?
하나의 기능을 수행하는 일련의 코드
중복되는 기능은 함수로 구현하여 함수를 호출하여 사용함
함수 정의 하기
함수의 이름, 매개변수, 반환 값을 선언하고 코드를 구현함
① 함수 이름 : 함수의 기능과 관련하여 명명
② 매개 변수 : 함수의 수행을 위해 필요한 변수
③ return : 함수 수행 결과를 반환하기 위한 예약어
④ 함수 반환 형 : 반환 값의 자료형을 나타냄, 반환 값이 없는 경우 void라고 씀
int add(int num1, int num2) { // int 함수 반환형, add 함수이름, int num1, int num2 매개변수
int result;
result = num1 + num2;
return result;
함수 구현하고 호출하기
public class FunctionTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int sum = add(num1, num2); // add() 함수 호출
System.out.println(num1 + " + " + num2 + " = " + sum + "입니다.");
}
// add() 함수
public static int add(int n1, int n2) {
int result = n1 + n2;
return result; // 결과 값 반환
}
}
함수와 스택 메모리
함수가 호출될 때 사용하는 메모리 - 스택(Stack)
함수의 기능 수행이 끝나면 자동으로 반환되는 메모리
클래스의 메서드 구현하기
클래스의 메서드는 멤버 변수를 사용하여 기능 구현
학생의 이름을 반환하는 메서드
public class Student {
int studentID;
String studentName;
int grade;
String address;
public String getStudentName() {
return studentName; // 학생의 이름을 반환하는 메서드
}
}
Class & Instance
클래스 생성하기
클래스를 사용하기 위해서는 클래스를 생성해야 함
new 예약어를 이용하여 클래스 생성
Student student = new Student(); // 클래스형, 변수이름, new 예약어, 생성자();
인스턴스와 힙 메모리
하나의 클래스 코드로부터 여러 개의 인스턴스를 생성
인스턴스는 힙(Heap) 메모리에 생성됨
각각의 인스턴스는 다른 메모리에 다른 값을 가짐
클래스, 인스턴스, 참조변수, 참조값
용어 | 설명 |
객체 | 객체 지향 프로그램의 대상, 생성된 인스턴스 |
클래스 | 객체를 프로그래밍하기 위해 코드로 만든 상태 |
인스턴스 | 클래스가 메모리에 생성된 상태 |
멤버 변수 | 클래스의 속성, 특성 |
메서드 | 멤버 변수를 이용하여 클래스의 기능을 구현 |
참조 변수 | 메모리에 생성된 인스턴스를 가르키는 변수 |
참조 값 | 생성된 인스턴스의 메모리 주소 값 |
생성자(Constructor)
// 생성자 기본 문법
<modifiers> <class_name>([argument_list])
{
[<statements>]
}
생성자는 인스턴스를 초기화 할 때의 명령어 집합
생성자의 이름은 그 클래스의 이름과 같음
생성자는 메소드가 아님. 상속되지 않으며, 리턴 값을 얻음
디폴트 생성자(Default Constructor)
하나의 클래스에는 반드시 적어도 하나 이상의 Constructor가 존재
프로그래머가 Constructor를 기술하지 않으면 Default Constructor가 자동으로 생김(컴파일러가 코드에 넣어줌)
Default Constructor는 매개변수, 구현부가 없음
만약 클래스에 매개변수가 있는 생성자를 추가하면 디폴트 생성자는 제공되지 않음
생성자 오버로드(Constructor Overload)
필요에 의해 생성자를 추가하는 경우 여러 개의 생성자가 하나의 클래스에 있음(Overload)
public class Person {
String name;
float height;
float weight;
public Person() {} // 디폴트 생성자
public Person(String pname) {
name = pname; // 이름을 매개변수로 입력받는 생성자
}
// 이름, 키, 몸무게를 매개변수로 입력받는 생성자
public Person(String pname, float pheight, float pweight) {
name = pname;
height = pheight;
weight = pweight;
}
}
참조 자료형
학생의 속성 중 수업에 대한 부분
수업에 대한 각 속성을 학생 클래스에 정의하지 않고 수업이라는 클래스에 분리해서 사용, 이때 과목은 참조 자료형으로 선언
변수의 자료형
- 기본 자료형 : int, long, float, double 등
- 참조 자료형 : String, Date, Student 등
클래스 형으로 선언하는 자료형
정보은닉(Information Hiding)
private 접근 제어자
클래스의 외부에서 클래스 내부의 멤버 변수나 메서드에 접근하지 못하게 하는 경우 사용
멤버 변수나 메서드를 외부에서 사용하지 못하도록 하여 오류를 줄일 수 있음
변수에 대해서는 필요한 경우 get(), set() 메서드를 제공
'IT' 카테고리의 다른 글
[Do it! 자바 프로그래밍 입문] 07 배열과 ArrayList (0) | 2022.05.26 |
---|---|
[Do it! 자바 프로그래밍 입문] 06 클래스와 객체2 (0) | 2022.05.25 |
[Java 개발자가 되기 위한 첫걸음 1] 03 코드의 흐름 제어 (0) | 2022.05.24 |
[Java 개발자가 되기 위한 첫걸음 1] 02 다양한 자료형 (0) | 2022.05.24 |
[Java 개발자가 되기 위한 첫걸음 1] 01 자바 프로그래밍의 시작 (0) | 2022.05.24 |