[java] OOP(Object Oriented Programming)

sesame·2021년 8월 4일
0

Java

목록 보기
9/25

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

프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법

절차지향: 작업의 흐름에 따라 ↔ 객체지향: 객체의 관계에 따라

> 장점

  • 프로그램 모듈 재사용성
  • 프로그램 확장 및 유지 보수 용이
  • 쉬운 프로그램 개발 → 생산성 향상
  • 완성도 높은 모듈 → 안정성 확보

> 특징

  • 추상화: 프로그램이 필요로 하는 실제 데이터들을 모델링 하는 기술

  • 캡슐화: 객체지향의 가장 중요한 데이터 보호 기술

  • 상속: 클래스의 재사용과 소스 코드의 중복제거를 목정으로 하는 기술

  • 다형성: 상속을 이용하여 여러 클래스 타입을 하나의 클래스 타입으로 다루는 기술


> 추상화(abstraction) - 정리 과정

유연성을 확보하기 위해서 구체적인 것은 제거하여 실제 데이터들을 모델링 하는 기술로 프로그램의 필요한 공통점을 추출하고, 불필요한 공통점을 제거하는 과정

추상화 EX1)

회원관리
주민등록번호 pNo string
이름 name string
성별 sex char
주소 address string
나이 age int


> 캡슐화

객체지향의 가장 중요한 데이터 보호 기술
데이터의 접근 제한(private)을 원칙으로 함

캡슐화 원칙

  • 클래스의 멤버 변수에 대한 접근 권한은 private을 원칙으로 한다.

  • 클래스의 멤버 변수에 대한 연산 처리를 목적으로 하는 함수들을 클래스 내부에 작성

  • 멤버 함수는 클래스 밖에서 접근할 수 있도록 public으로 설정한다.


> 다형성

  • 메소드 오버로딩
    하나의 클래스 영역 내에서 이름이 같은 메소드를 여러 개 정의할 수 있다.
    동일한 기능을 수행하는 메소드가 전달 값을 각각 다르게 받아서 구동되는 경우 매번 메소드 이름을 다르게 작성하는 것보다 훨씬 더 프로그램 가독성을 좋게 할 수 있다.

EX1)

public class OverloadingPractice {
     public void getNum(int num1){
          //OverloadingPractice.getNum(3);
     }
     public void getNum(float num1){
          //OverloadingPractice.getNum(2.3);
     }
public void getNum(int num1, int num2){
          //OverloadingPractice.getNum(3 ,5);
     }
}

> 상속 extends 부모 class

  • 메소드 오버라이딩(overriding) : 메소드 재작성 @override
    부모 클래스로부터 상속받은 메소드를 자식 클래스에서 다시 작성하는 것보다 훨씬 더 프로그램 가독성이 좋게 할 수 있다.

//클래스 재사용, 코드의 중복 제거

특징

  • 모든 클래스는 Object 클래스의 후손

  • 부모 클래스의 생성자, 초기화 블록은 상속 안 됨

  • 부모의 private 멤버는 상속은 되지만 직접 접근 불가

  • 자바: 부모지정은 1개만, 단일 상속만

    • 단일상속

    • 다중상속

0개의 댓글

관련 채용 정보