안녕하세요 오늘은 객체지향프로그래밍 언어란 무엇인지 알아보도록 하겠습니다.
객체지향프로그래밍은 데이터를 추상화한 상태와 행위를 가진 객체로 만들고 그리고 이런 객체들 간의 상호작용을 통해 프로그램 로직을 구성하는 프로그래밍 방법론을 의미합니다.
객체와 객체지향프로그래밍
객체 지향프로그래밍을 알기전에 객체라는것이 어떻게 프로그래밍상에성 존재하며 어떻게 작용을 하는지를 알아야합니. 먼저 객체에 대해서 정의를 하자면
객체 정의
객체는 데이터 또는 식별자에 의해서 참조되는 공간을 의미합니다. 값을 저장할 변수와 작업을 수행할 메소드를 포함해서, 이런 변수들과 서로 연관된 것들끼리 묶어서 만들것들을 객체라고합니다.
객체지향프로그래밍 정의
객체 지향 프로그래밍(oop)는 컴퓨터 프로그램을 명령어 목록으로 보는시각에서 벗어나서 여러개의 독립된 단위인 '객체'들의 모임으로 파악하는 컴퓨터 프로그래밍 패러다임 중 하나라고 할 수 있습니다. oop는 유연하며 변경이 쉽게 할 수 있고 대규모 소프트웨어 개발에 많이 사용되곤합니다.
객체는 레고로 비유가 가능하고 레고 조각을 객체하나하나라고 가정한다면 이런 조각들을 조립하고 무언가를 만드는것이 객체 지향프로그래밍이라고 할 수 있습니다. 래고 조각처럼 여러곳에서 재사용할 수 있고 부품화를하고 재사용이가능하다는것이 oop의 장점입니다.
객체지향프로그래밍 언어들
객체 지향 프로그래밍 언어들은 많이 존재합니다. 대표적이고 유명한 언어들을 예로들자면
- c++
- C#
- Dart
- Java
- Pascal
- Ruby
- Python
우리가 흔히 사용하는 언어들 중에 객체 지향 언어가 실질적으로 많고 우리 사용하는 전자기기에 들어가있는 프로그래밍된 언어들 대다수가 객체지향프로그래밍으로 자리를 잡은 경우가 많습니다.
객체지향프로그래밍 vs 절차지향프로그래밍
객체 지향 프로그래밍은 절차 지향 프로그래밍과 비교가 될 수 있습니다. 절차지향프로그래밍은 순차적으로 실행되는것에 초점을 맞추고 객체 지향프로그래밍은 객체 간의 관계와 조직에 초점을 맞추는데요. 두 방법론은 각기 다른 장단점을 가지고 있고 상황에 따라서 적절히 사용될 수 있습니다.
객체지향프로그래밍 언어 특징
객체 지향프로그래밍은 다음과같은 주요 특징을 가지고 있습니다.
1. 추상화(Abstraction)
객체들의 공통적인 특징(기능, 속성)을 도출하는것을 말합니다. 객체 지향적 관점에서는 클래스를 정의하는것이 추상화라고 할 수 있습니다. (클래스가 없는객체 지향언어 또한 가능합니다. 예를 들면 javascript)
2. 캡슐화(Encapsulation)
실제로 구현되는 부분은 외부에 드러나지 않도록 하여서 정보를 은닉할 수 있습니다. 객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리합니다. 이를 통해서 오류 방지 및 편리성을 높일 수 있다는 장점이 있습니다.
3. 상속성(Inheritance)
하나의 클래스가 가진 특징(함수, 데이터)을 다른 클래스가 그대로 물려받는 것을 말하는데 이를 통해서 기존 코드를 재사용하여서 새로운 클래스를 쉽게 생성할 수 있습니다.
4. 다형성(Polymorphism)
약간 다른 방법으로 동작하는 함수를 동일한 이름으로 호출할 수 있다는것을 말하는데요. 객체 지향프로그래밍에서는 동일한 명령의 해석을 연결된 객체에 의존하게됩니다. 대표적인 예를 들면 Overriding과 Overloading이 있습니다.
- Overring : 부모 클래스의 메소드와 같은 이름을 사용하여서 매개변수도 갈되 내부 소스를 재정의하는것을 의미
- Overloading : 같은 이름의 함수를 여러개 정의한 후에 매개변수르 다른게 하여서 상황에 따라서 호출하여 사용하는것
5. 동적 바인딩(Dynamic Binding)
가상 함수를 호출하는 코드를 컴파일할 때, 바인딩을 실행 시간에 결정하는것입니다. 파생 클래스의 객체에 대해, 기본 클래스의 포인터로 가상함수가 호출될 때 일어납니다. 이를 통해 프로그래밍의 유연성을 높이고 파생 클래스에서 재정의한 함수의 호출을 보장할 수 있습니다.
객체 지향프로그래밍의 장점
1. 소프트웨어의 생산성 향상
객체 지향 프로그래밍은 다양한 소프트웨어 재사용 방법을 제공하는데 이미 만들어진 클래스를상속받거나 객체를 재사용하거나 부분 수정을 통해서 소프트웨어 작성 부담을 크게 줄일 수 있습니다.
2. 쉬운 모델링
우리가 흔히 생각하는 사물이나 개념을 클래스로 쉽게 표현할 수 있고 예를 들어서 자동차를 객체로 만들면 연식, 제조사, 배기량, 색상 등 개념을 쉽게 정의할 수 있습니다.
3. 보안성 향상
객체 지향 프로그래밍의 캡슐화 특징으로 인해서 실제로 구현되는 부분을 외부에 드러나지 않도록 하여서 개인정보라던지 중요한 정보를 은닉할 수 있습니다.
객체 지향프로그래밍의 단점
1. 느린 실행속도 객체
지향 프로그래밍은 캡슐화와 격리구조 때문에 절차 지향프로그래밍과 비교하면 실행속도가 느린데요. 또 객체 지향에서는 모든것들을 객체로 생각해서 추가적인 포인터 크기의 메모리와연산하는게 소비가됩니다.
오늘은 이렇게 객체지향프로그래밍 언어의 대해서 알아보았습니다. 이렇게 객체지향프로그램은 분명히 장점이 존재하고 반대로 단점이 존재하는데요. 여러분들이 원하는 언어를 배울때 객체지향프로그래밍과 절차지향프로그래밍 둘다 배우는것을 추천드립니다.
'IT' 카테고리의 다른 글
파이썬(python) int() 함수 기초부터 심화까지 알아보자 (0) | 2024.07.19 |
---|---|
자바스크립트 비동기처리란 무엇인가? (1) | 2024.06.09 |
c언어 연산자 종류 정리 이글로 종결 (0) | 2024.06.01 |
a7s4 출시와 스펙을 알아보자 (0) | 2024.05.28 |
A1M2 출시와 그리고 스펙을 알아보자 (0) | 2024.05.22 |