Home [Java basic] 07. 객체 지향 프로그래밍의 기초
Post
Cancel

[Java basic] 07. 객체 지향 프로그래밍의 기초

1. 객체 지향 프로그래밍 개요

객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란

  • 프로그램을 조립하여 만드는 방식
  • 프로그램을 부분별로 만든 뒤 전체를 구성하는 방식이기 때문에 업무를 분업하기 편함

객체 지향 프로그래밍의 장점

유지보수성

  • 코드를 고치기 쉽다.
  • 객체별 관리가 가능하다.
  • 문제가 생기면 특정 객체만 고치면 됨

코드 재사용성

  • 다른 프로그램에서 구현한 것을 다시 사용하기 쉽다.

프로그램 확장성

  • 부분별로 만들어져 있었기 때문에 새로운 코드로 확장하기 편하다.

클래스와 객체의 관계

클래스(class)

  • 객체의 설계도
  • 객체를 만드려면 클래스가 필요하다.

객체(object)

  • 프로그램의 부품
  • 클래스를 토대로 만들어진 프로그램의 구성요소
  • 인스턴스(instance)라고 부르기도 함

클래스와 객체의 관계

  • 클래스를 토대로 객체를 만드는 과정을 인스턴스화(instantiation)라고 함
    • 인스턴스화 과정
      • 클래스 → 객체(인스턴스) → 프로그램

2. 클래스 설계와 구현

클래스 설계

  • 객체를 미리 구상하는 과정
  • 객체의 상태(state)와 동작(behavior)을 정의하는 것
    • 객체가 가질 상태를 필드(field), 동작을 메소드(method)로 정의
  • 클래스를 도식화한 것을 클래스 다이어그램(class diagram)이라고 함

클래스 구현

  • 클래스는 필드와 메소드를 묶는 캡슐화이다
    • 캡슐화(encapsulation)
      • 관련 데이터와 코드를 하나의 단위로 묶는 것

        클래스 구현 순서

        1. 클래스를 만든다.
        2. 클래스 안쪽 필드에 변수를 작성한다
        3. 메소드 영역을 정의 한다.
    • 메소드에 public static 키워드는 사용하지 않는다
  • 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. 객체의 활용

객체 생성

객체 생성 과정

  1. 객체 생성
    • new 키워드와 함께 클래스명과 소괄호를 적어 생성
  2. 레퍼런스변수 생성
    • 생성 객체를 다시 사용하기 위해 생성
  3. 생성 객체를 변수에 대입
    • ex. Person 객체 생성
      1
      
       Person p = new Person();
      

필드 사용하기

인스턴스 변수(instance variable)

  • 객체 속 존재하는 필드
  • 생성한 객체 뒤에 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라는 매개변수가 들어감
              ...
          }
      }
    
This post is licensed under CC BY 4.0 by the author.