[Java] Object Oriented Programming

게맛살맛게·2021년 12월 6일
0

Java

목록 보기
8/18

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

  • 현대 컴퓨터 프로그래밍 패러다임의 하나
  • 프로그램을 여러개의 독립된 단위(객체)들의 모임으로 파악
  • 특징
    • 소프트웨어의 부품화, 재사용을 주 목표로 함
    • 코드의 재사용성이 높음
    • 코드 관리가 쉬워짐 : 개발과 유지보수에 강점, 직관적 코드 분석이 가능
    • 신뢰도 높은 프로그램 개발 가능

객체 (Object)

  • 현실세계에 존재하는 명명할 수 있는 모든 것
  • 정보를 효율적으로 관리하기 위해 의미를 부여하고 분류하는 논리적 단위
  • 객체는 다른 객체와 서로 상호작용하며 동작
  • 데이터(상태, 속성)와 관련된 동작(함수)을 모두 포함한 개념 (Data + Method)
  • Object
    Data(field)
    Method

클래스 (Class)

  • 객체를 정의해 놓은것
  • 객체를 생성하는데 사용되는 설계도

인스턴스 (Instance)

  • 객체는 인스턴스의 일반적인 의미 (Class > Instance)
  • 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부름
  • 인스턴스 instance : 객체가 메모리에 할당되어 실제 사용될 때
  • 인스턴스화 instantiate : 클래스로부터 인스턴스를 생성하는 것

객체지향의 네가지 특성

  • 상속성Inheritance : 잘 만들어진 클래스 재사용 -> 코드 중복성 제거, 코드 안정성
  • 캡슐화Encapsulation : 접근성 제한 -> 필드보호 -> 정보은닉
  • 다형성Polymorphism : 클래스를 다양한 방식으로 접근해서 사용
  • 추상화Abstraction : 내부구조와 상관없이 사용가능

상속 (Inheritance)

이미 만든 객체와 비슷하지만 필드와 메서드가 약간 차이나는 새로운 객체 § 확장extends라고도 부름

  • 기존의 클래스에서 공통된 필드와 메서드를 상속(재사용)
  • 더 필요한 필드와 메서드를 추가

IS - A 관계

  • ChildClass is a ParentClass
    공통부분 추출 (데이터, 메소드) -> 추상화 (일반화)

Extends

  • 자식Class는 부모의 필드와 메소드는 구현하지 않아도 그대로 사용가능
  • 필요한 field 및 method만 추가로 구현하여 사용할 수 있음

캡슐화 (Encapsulation)

외부의 잘못된 사용으로 객체가 손상되는 것을 피하고자 사용
접근 제한자Access Modifier을 사용하여 객체의 필드와 메서드의 사용범위를 제한

  • 객체의 실제 구현된 내용을 감추고 접근 방법만 노출
  • 외부 객체(객체 사용 부)에서는 객체의 내부 구조를 알지 못함(알 필요도 없음)
  • 객체가 노출하여 제공하는 필드와 메서드만 이용 가능
  • 개발자는 숨겨야하는 필드와 메서드, 공개하는 필드와 메서드를 구분하여 작성 필요

다형성 (Polymorphism)

Java 객체 지향에서 가장 중요한 개념
하나의 매서드나 클래스를 다양한 구현으로 사용 가능하게 하는 개념

  • 오버로드Overload와 오버라이드Override를 통해 다형성을구현

오버로드 (Overload)

같은 이름의 매서드를 파라미터를 다르게 하여 재사용

	public static void add () { ... };
	public static void add (int a, int b) { ... };			//overload
	...

오버라이드 (Override)

상속된 메서드 재정의(덮어쓰기)
부모에게 상속받은 메소드를 수정하여 자식만의 기능을 구현하는 기능

	public class Parent {
		public void add () { ... };
	}
    
	public class Child extends Parent {
		public void add () { /* Child Own statement */ };	// override
	}
profile
IT 기술블로그

0개의 댓글