[Java] 객체지향 프로그래밍(OOP)

jeong·2021년 5월 17일
0

Java 자바

목록 보기
9/28

객체지향 프로그래밍(OOP)

객체지향 프로그래밍은 시간과 비용에 대한 효율성을 더 좋게 만드는 프로그래밍 기법이다.

객체(Object) :

실제로 존재하는 것. 클래스가 제품 설계도라면 객체는 제품이라 할 수 있다. 클래스와 필드 포스팅에서 더 쓸 예정

절차지향보다 객체지향이 더 나은 이유

  • 절차지향은 함수를 사용한 코드로 프로그램을 만들때마다 절차를 다 만들어줘야하고 약간의 변화에도 손이 많이 가서 유지보수/확장성 측면에서 생산성이 떨어진다.
  • 객체지향은 추상화, 캡슐화, 다형성, 상속성을 이용해 코드 재사용률을 증가시켜 재사용 확장이 용이하다.
  • 유지보수가 쉬워 생산성이 좋고 대형 프로젝트를 할 때 유리한 장점이 있다.
  • 객체지향은 클래스 자료형을 배포할 수 있다.
  • 제어자와 메소드를 이용해서 데이터를 보호하고 코드의 중복을 막아 코드 불일치로 인한 오류를 방지할 수 있다.

객체지향 프로그래밍(OOP)의 특징

1) 캡슐화(Encapsulation) :

데이터와 메소드를 묶은 것을 말한다. 객체의 외부에서 데이터에 직접 접근하지 못하게 하고 메소드를 통해서만 조작할 수 있다.

2) 정보 은닉(Information Hiding) :

정보가 어떻게 구현되어 있는지 외부에 숨기고 대신 외부에서 사용할 수 있는 인터페이스를 제공한다. 중요한 데이터를 그대로 노출했다가 정보가 손상되거나 오용될 수 있고, 내부를 건드리게 되면 나중에 유지보수나 업데이트가 어려워지기 때문이다.

//추상화(Abstraction) :
대상에서 특징만 뽑아내는 것. 복잡한 세부사항을 숨기고 주요한 기능에 집중할 수 있게 해주는 개념이다.

3) 상속(Inheritance) :

한 클래스가 가지고 있는 특징들을 다른 클래스가 물려받는 것을 말한다. 부모 클래스의 기능들을 가지고 와서 기존 클래스와 구분되는 특징을 추가할 수 있다. => 재사용 + 유연성

4) 다형성(Polymorphism) :

하나의 클래스나 함수가 다양한 방식으로 동작하는 것을 말한다. 같은 이름의 메소드를 호출해도 상태에 따라 메소드를 선택하여 호출하는 기능
=> 메소드 오버라이딩(Overriding), 메소드 오버로드(Overload)

  • 오버라이딩(Overriding) : 상속받은 자식 클래스가 부모 클래스에서 정의된 함수를 그대로 가지고 와(같은 이름 사용) 다른 행위를 하게 재정의한다. 이름이 같지만 오버라이딩 되어있다면 자식 클래스에 있는 것이 호출된다.
    // 부모클래스의 메소드명과 같고 해당 메소드의 매개변수가 반드시 있어야 하며 리턴타입도 같아야 함. 기능 추가가 가능
    // 부모 클래스의 메소드는 숨겨지고 자식 클래스의 메소드만 사용 가능

  • 오버로드(Overload) : 같은 함수명을 사용하는데 데이터 타입, 매개변수의 갯수를 다르게 해서 어떤 인자를 몇 개 넘기느냐에 따라 동작을 다르게 하는 것을 말한다.

profile
배우는 초보개발자

0개의 댓글