차곡차곡 성 쌓기
article thumbnail

객체 지향언어

객체

세상 모든 것이 객체로 이루어진다. (TV, 냉장고, 컴퓨터, 사람...)

 

실세계 객체의 특징

  • 객체마다 고유한 특성(state)와 행동(behavior)를 가짐
  • 다른 객체들과 정보를 주고 받는 등, 상호작용하면서 존재

 

객체 지향 언어의 목적

▶︎ 소프트웨어 생산성 향상

  • 컴퓨터 산업 발전에 따라 소프트웨어 생명주기가 단축됨
  • 상속, 다형성, 객체, 캡슐화 등 소프트웨어 재사용을 위한 여러 장치가 내장됨 ➞ 재사용, 부분 수정 용이. 다시 만들 필요 없음

▶︎ 실세게에 대한 쉬운 모델링

  • 실세계에서 발생하는 일을 프로그래밍하기 때문에, 절차나 과정보다 물체들의 상호작용으로 묘사하는 것이 용이

 

절차 지향 프로그래밍과 객체 지향 프로그래밍

▶︎ 절차 지향 프로그래밍

  • 작업 순서 표현
  • 작업을 함수로 작성한, 함수들의 집합

▶︎ 객체 지향 프로그래밍

  • 객체들간의 상호작용으로 표현
  • 클래스 혹은 객체들의 집합으로 프로그램 작성

 

객체 지향언어의 특성

1. 캡슐화

객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것

목적 : 외부의 접근으로부터 객체 보호

 

자바의 캡슐화

  • 클래스 : 객체 모양을 선언한 . 객체의 속성과 행동 표현
    • 메소드와 필드는 모두 클래스 내에 구현
  • 객체 : 클래스의 모양대로 생성된 실체(instance)
    • 객체 내 데이터에 대한 보호, 외부 접근 제한

 

2. 상속

하위 개체가 상위 개체의 속성을 모두 가지는 관계

 

자바의 상속

• 부모 클래스(슈퍼 클래스)

class Animal {
    String name;
    int age;
    void eat(){...}
}

 

• 자식 클래스(서브 클래스)

  • extends 키워드
  • 자식 클래스 객체는 부모 클래스의 멤버를 모두 가짐
class Human extends Animal {
    String hobbyl
    String job;
    void work(){...}
}
 

3. 다형성

같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현

 

다형성 사례

  • 메소드 오버로딩 : 같은 이름이지만 다르게 작동하는 여러 메소드
  • 메소드 오버라이딩 : 슈퍼클래스의 메소드를 서브 클래스마다 다르게 구현

 

클래스와 객체

▶︎ 클래스

  • 객체를 만들어 내기 위한 설계도 혹은 틀
  • 객체의 속성과 행동 표현

▶︎ 객체

  • 클래스의 모양대로 생성된 실체
    • 프로그램 실행 중 생성되는 실체
    • 메모리 공간을 갖는 구체적인 실체
  • 인스턴스(instance)라고도 부름

객체 생성 과정

 

728x90
profile

차곡차곡 성 쌓기

@nagrang

포스팅이 좋았다면 "좋아요" 해주세요!