1. 객체 지향 프로그래밍 개요
객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란
- 프로그램을 조립하여 만드는 방식
- 프로그램을 부분별로 만든 뒤 전체를 구성하는 방식이기 때문에 업무를 분업하기 편함
객체 지향 프로그래밍의 장점
유지보수성
- 코드를 고치기 쉽다.
- 객체별 관리가 가능하다.
- 문제가 생기면 특정 객체만 고치면 됨
코드 재사용성
- 다른 프로그램에서 구현한 것을 다시 사용하기 쉽다.
프로그램 확장성
- 부분별로 만들어져 있었기 때문에 새로운 코드로 확장하기 편하다.
클래스와 객체의 관계
클래스(class)
- 객체의 설계도
- 객체를 만드려면 클래스가 필요하다.
객체(object)
- 프로그램의 부품
- 클래스를 토대로 만들어진 프로그램의 구성요소
- 인스턴스(instance)라고 부르기도 함
클래스와 객체의 관계
- 클래스를 토대로 객체를 만드는 과정을 인스턴스화(instantiation)라고 함
- 인스턴스화 과정
- 클래스 → 객체(인스턴스) → 프로그램
- 인스턴스화 과정
2. 클래스 설계와 구현
클래스 설계
- 객체를 미리 구상하는 과정
- 객체의 상태(state)와 동작(behavior)을 정의하는 것
- 객체가 가질 상태를 필드(field), 동작을 메소드(method)로 정의
- 클래스를 도식화한 것을 클래스 다이어그램(class diagram)이라고 함
클래스 구현
- 클래스는 필드와 메소드를 묶는 캡슐화이다
- ex.
Person
클래스 만들기1 2 3 4 5 6 7 8 9 10
public class Person{ // 변수 작성 String name; // 이름 int age; // 나이 // 메소드 정의 void status{ System.out.println("달리기!"); } }
3. 객체의 활용
객체 생성
객체 생성 과정
- 객체 생성
- new 키워드와 함께 클래스명과 소괄호를 적어 생성
- 레퍼런스변수 생성
- 생성 객체를 다시 사용하기 위해 생성
- 생성 객체를 변수에 대입
- ex.
Person
객체 생성1
Person p = new Person();
- ex.
필드 사용하기
인스턴스 변수(instance variable)
- 객체 속 존재하는 필드
- 생성한 객체 뒤에
dot 연산자 + 인스턴스 변수
를 입력한다.- dot 연산자
- 객체 접근을 위한 연산자
- 인스턴스 변수에 접근 및 변경 가능
- dot 연산자
- ex.
Person
객체에 있는 인스턴스 변수name
출력 및 변경1 2 3 4 5 6 7 8 9
// 객체 생성 Person p = new Person(); // 인스턴스 변수 접근 System.out.println(p.name); // "null" 출력 // 인스턴스 변수 변경 p.name = "홍길동"; System.out.println(p.status); // "홍길동" 출력
여러 객체 만들기
하나의 클래스로 여러 객체를 만들 수 있음
ex.
Person
클래스로 2개의 객체 만들기1 2
Person p1 = new Person(); Person p2 = new Person();
메소드 호출하기
인스턴스 메소드(instance method)
- 특정 객체가 주체가 되어 수행하는 동작
- ex.
Person
의 인스턴스 메소드 호출하기1
p.status(); // "걷기" 출력
메소드 오버로딩(method overloading)
- 자바는 한 클래스에 같은 이름의 함수 중복 선언 불가
- 하지만 매개변수(parameter)가 다르면 가능!
- 이름이 같은 메소드를 매개변수의 개수 또는 타입으로 구분하는 기법
- ex.
Person
클래스에서 메소드 오버로딩으로 구분할 수 있는메소드 2개
만들기1 2 3 4 5 6 7 8
public class Person{ void status(){ ... } void status(int times){ // times라는 매개변수가 들어감 ... } }