JongTachi의 개발 블로그

[IT info]객체지향 프로그래밍이란? 본문

IT Information

[IT info]객체지향 프로그래밍이란?

JongTachi 2022. 12. 16. 09:23
728x90
반응형

1. 정의 

객체지향 프로그래밍은 문제를 여러 개의 객체 단위로 나눠 작업하는 방식을 말합니다. 이 방식은 오늘 날 가장 많이 사용하는 프로그래밍 방식이고 JAVA, C#등이 대표적인 객체지향 프로그래밍 언어입니다. 

Object-Oriented Programming(OOP)라고도 부릅니다.

 

2. 객체지향 프로그래밍의 특징

1) 추상화

   - 객체에서 공통된 속성과 행위를 추출

   - 공통의 속성과 행위를 찾아서 타입을 정의

   - 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단하게 만듦

 

추상화

그럼 추상화가 왜 필요할까요? 

자동차로 예를 들어봅시다. BMW, 벤츠, 볼보는 모두 자동차에 해당됩니다. 자동차라는 추상화 집합을 만들어두고 자동차들이 가진 공통적인 특징들을 만들어서 사용합니다. 하지만 현대, 기아와 같이 다른 브랜드들이 추가 될 수도 있겠죠? 이때 자동차를 구현해 놓으면 다른 곳의 코드를 수정할 필요 없이 추가로 만들 부분만 생성해서 넣어주면 됩니다. 

 

2) 캡슐화

   - 객체의 속성(data fields)과 행위(methods)를 클래스(class)에 하나로 묶는다. 

   - 낮은 결합도를 유지할 수 있도록 설계하는 것

   - 실제 구현 내용 일부를 내부에 감추어 은닉한다.

캡슐화

객체의 응집도와 독립성을 높임으로서 객체의 모듈화를 지향합니다. 객체의 모듈화가 잘 이루어져있을 경우에는 모듈 단위의 재사용이 매우 용이합니다. 즉 간편한 유지보수가 가능하다는 소리죠.

 

3) 상속

   - 클래스의 속성과 행위를 하위 클래스에 물려주거나 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것

   - 새로운 클래스가 기존의 클래스의 데이터와 연산을 이용할 수 있게 하는 것

 

상속시 상속받은 객체는 자식, 상속된 객체는 부모라고 말합니다. 자식 객체는 상속된 부모 객체의 은닉화 구성에 따라 정해진 변수나 메서드를 가져와 사용할 수 있습니다. 

 

4) 다형성

   - 하나의 변수명, 함수명이 상황에 따라 다른 의미로 해석 될 수 있다.

   - 어떠한 요소에 여러 개념을 적용하는 것이다.

 

다형성은 프로그램 언어 각 요소들이 다양한 자료형에 속하는 것이 허가되는 성질을 말합니다. 즉 하나의 타입에 여러 객체를 대입할 수 있는 성질로 이해하면 편합니다. 무슨 말인지 이해가 안 되신다구요? 간단한 예를 들어봅시다

 

자바에서 예를 들어볼게요. 자바를 공부하신 분들이라면 System.out.println()이라는 함수 다들 아실 겁니다.

System.out.println()는 하나의 타입만 적을 수 있나요? 아니죠!! 

System.out.println("안녕하세요");	// 문자열
System.out.println(9);			// 숫자

이렇게 문자열, 숫자 등 다양하게 출력이 가능합니다. 하나의 타입말고 여러 타입의 객체를 넣을 수 있다는게 다형성이라고 생각하시면 될 것 같습니다. 

 

다형성에서 중요한 오버라이딩, 오버로딩에 대해 말씀드리겠습니다.

 

[오버라이딩]

  • 부모클래스에서 상속받은 내용을 자식클래스에서 재정의
  • 재정의한 내용을 다시 부모클래스에 덮어 쓸 수 있음

부모 클래스에 있는 필드 또는 메소드를 다른 내용으로 실행시기는 것이 오버라이딩입니다. 간단히 상속해준 부분에 한해 내용(값)을 덮어 쓴다라고 이해하시면 됩니다.

 

[오버로딩]

  • 이름이 같은 메소드에서 파라미터가 다를 경우 각기 다른 행위를 한다.

메서드의 이름이 print 여도 입력된 argument에 따라 알아서 결정해줍니다.

void print (int a, int b)

void print (String arg)

 

728x90
반응형