본문 바로가기

Etc../SWExpertAcademy

[Java Programming] 객체지향 핵심 원리(1)

객체지향 핵심 개념

■ 객체지향 개요

OOP(Object Oriented Programming)

  • 여러 모듈을 조립하여 다양한 기능을 구현함
  • 특정 모듈에 오류가 발생하면 수정/개선이 용이함
  • 객체와 객체 간 자유로운 데이터 이동이 가능해짐

객체, 클래스, 인스턴스

  • 객체 : 현실세계에 존재하는 유무형의 모든것( 변수, 메소드 )

  • 클래스 : 현실 세계의 객체를 컴퓨터 메모리에 생성할 수 있는 템플릿

  • 인스턴스 : 컴퓨터 메모리에 존재하는 객체


객체지향 언어의 주요 개념

상속 (Inheritance)

  • 기존의 클래스에 변수와 메서드를 추가 정의하여 새로운 클래스를 작성함
  • 클래스들 사이의 공통된 속성이나 기능이 있을 경우, 상속을 통해 코드의 재사용성을 높임
  • 상속을 통해 객체들 사이의 계층 구조를 이룰 수 있음
  • 상위계층으로 갈수록 일반화,보편화 / 하위계층으로 갈수록 특수화, 개별화된 형태로 만들어짐
  • Extends라는 예약어를 통해 생성
public class Car{
    string name;

    String getname(){
        return name;
    }
}

public class Taxi extends Car{
    int fare;
}

∴Taxi 클래스는 부모클래스 Car로부터 변수와 메서드 모두 물려받음.


public class Main{
    public static void main(String args[]){
        Taxi myTaxi = new Taxi();
        myTaxi.name = "대현운수";
        myTaxi.fare = 3400;
        System.out.println(myTaxi.getname());
    }
}

부모클래스와 자식클래스의 관계는 일반화, 특별화 관계 ( is a~)에 있어야함.



다형성 (Polymorphism)

  • 하나의 인터페이스를 이용해 서로 다른 구현을 제공함
  • 메서드 오버로딩(Overloading) : 한 클래스 안에 같은 이름의 메서드를 여러개 정의하며 인자의 개수나 유형을 다르게 해놓은 형태
  • 메서드 오버라이딩(Overriding) : 하위 클래스가 상위클래스의 메서드를 재정의 / 형태는 상위클래스에서 선언된 형태와 같음.


추상화 (Abstraction)

  • 구체적인 사실들을 일반화시켜 기술하는 것
  • 현실세계에 존재하는 다양한 객체들의 공통된 특성을 모아 일반화해 놓는 것
  • ex) 비행기, 자동차, 열차, 배 -> 운송수단
  • 이는 클래스를 정의하는데 중요한 역할


캡슐화 (Encapsulation)

  • 변수와 메서드를 하나의 추상화된 클래스로 묶는 과정 ( 독립적으로 동작하지 않도록 함 )
  • 객체가 제공하는 메서드를 통해 객체를 이용, 데이터가 실제로 어떻게 처리되는지 알 필요 없음.


정보 은닉 (Information Hiding)

  • 캡슐화된 변수나 메서드를 선택적으로 공개하거나 숨길 수 있음(정보은닉)
  • public, protected, private 예약어 사용.


메시지 (Message)

  • 객체 간 서로 통신하는 방법
  • 서로 메시지를 주고받기 때문에 여러 객체는 동일한 프로세스를 가질 필요 없음





[참고] : SWExpertAcademy