객체지향 프로그래밍

맹민재·2022년 3월 24일
0

CS 정리

목록 보기
2/8

객체란

객체란 변수와 함수의 추상화 과정을 통합하여 표현 대상(문제 해결 대상)을 좀 더 모듈화 하기 쉽게 도와주는 일종의 도구이며 객체지향 프로그래밍은 객체의 디자인을 한 뒤에 이들의 데이터 플로우를 짜고 진행 시나리오를 설계해나가는 방식의 개발 방법론입니다. 객체지향은 코드의 재사용성이 높습니다.


객체지향 VS 절차지향

  1. 객체지향은 절차를 간소화하는 것이지, 결코 절차를 무시하는 게 아닙니다.

  2. 절차지향은 데이터와 함수가 분리되고 통일성이 없지만, 객체지향은 좀 더 모듈화 되어 체계적입니다.

  3. 절차지향은 과도한 전역 변수의 사용, 스파게티 소스, 변경과 확장, 프로그램에 대한 이해가 어렵지만, 객체지향은 코드의 재사용성이 높습니다.

  4. 절차지향은 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식이고, 객체지향은 반대로 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에 이들의 실행 순서와 흐름을 짜는 방식입니다.

객체지향의 프로그래밍의 개념들

  • 캡슐화 - 데이터와 함수들을 객체 안에 넣어서 묶는다.
  • 정보은닉 - 객체 간의 모든 통신은 함수 호출을 통해야 하며 객체의 함수를 가지고 상호작용 함으로써 객체 내부 구현의 새부 사항은 외부 세게로 부터 감춰진다. 내부 데이터가 숨겨져 있다는 것은 프로그램의 다른 부분에 영향을 미치치 않고 쉽게 변경될 수 있음을 의미한다.
  • 상속, 다형성 - 자식 클래스는 부모 클래스를 물려받으며 확장 가능합니다. 자식 클래스에서는 부모 클래서에서 물려받은 함수를 다른 기능으로 사용하는 것이 가능하다.

객체, 클래스, 인스턴스

/* 클래스 */
public class Animal {
  ...
}
/* 객체와 인스턴스 */
public class Main {
  public static void main(String[] args) {
    Animal cat, dog; // '객체'

    // 인스턴스화
    cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html

클래스(Class) VS 객체(Object)

클래스는 ‘설계도’, 객체는 ‘설계도로 구현한 모든 대상’을 의미한다.

객체(Object) VS 인스턴스(Instance)

클래스의 타입으로 선언되었을 때 객체라고 부르고, 그 객체가 메모리에 할당되어 실제 사용될 때 인스턴스라고 부른다.


인터페이스와 추상 클래스

추상 클래스는 일종의 미완성 설계도로 추상 메소드가 존재하는 클래스로 구현부가 없는 메소드를 추상 메소드라고 합니다. 상속을 통해 하위 클래스에서 확장해서 사용하는 느낌입니다.
구현부는 하위 클래스에서 합니다. 추상 클래스는 객체를 만들 수 없는 클래스이며 하위 클래스에서 구현을 강제 해야합니다.

인터페이스는 아무것도 없고 밑그림만 그려져 있는 기본 설계로 하위 클래스에서 각 클래스의 목적에 맞게 기능을 구현합니다.
인터페이스는 다중 상속을 하기 위해 사용한다. 추상 클래스에서 기능을 확장하고 인터페이스를 통해 어떤 기능을 할지 정의합니다.

오버로딩 오버라이딩

  • 오버로딩
    같은 이름의 메서드를 매개변수의 유형이나 개수가 다르게 하는 기술
  • 오버라이딩
    상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의 하는것

참조
https://gmlwjd9405.github.io/2018/09/17/class-object-instance.html

https://cocoon1787.tistory.com/44

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글