CS

객체지향언어의 모든 것

히똔 2022. 6. 30. 18:38
728x90
반응형

 

객체지향언어의 종류


012345

자바, C++, C#, Python, Swift, Ruby 등

 

객체지향언어와 절차지향언어의 차이


절차지향언어는 대표적으로 C언어가 있다. 
절차지향언어는 순차적으로 처리하기 때문에, 코드가 모두 유기적으로 연결되어야한다. 
때문에 시스템 일부분에서 에러가 발생하면, 시스템 전체를 변경해야한다. (절차지향 단점 1)
또한, 코드 작성 순서에 따라 결과값이 달라질 수 있기 때문에 융통성이 부족하다. (절차지향 단점 2)

이러한 단점을 보완하기 위해 객체지향언어가 등장했다.
모든 변수와 함수를 기능별로 모듈화하기 때문에 유지보수가 훨씬 편하고, (객체지향 장점 1)
같은 기능을 중복 연산하지 않도록 개발이 가능하다.

이렇게 보면 객체지향언어가 더 좋은것처럼 보이지만 그렇지 않고, 각 상황에 따라 더 유리한 것을 이용하는 것이 옳다.
컴퓨터와 비슷한 처리방식을 갖는 절차지향언어는 객체지향언어보다 프로그램 처리속도가 빠르다. (절차지향 장점)

 

  절차지향언어 객체지향언어
장점 실행 속도가 빠름

유지보수가 쉽다.
재사용성 증가
디버깅이 쉬움
코드 작성 시 절차지향언어보다 쉬움
단점 유지보수가 어려움
언어의 융통성이 부족하다.
디버깅이 어려움
실행속도가 느림
설계에 더 많은 시간이 소요됨

 

 

객체지향언어의 특징


1. 추상화

여러 객체의 공통적인 특징을 하나의 객체로 다루는 것이다.

예를 들어, cat과 dog이라는 클래스를 만든다고 할때, animal이라는 키워드로 둘을 묶을 수 있다.
cat 과 dog은 울고, 4발로 기기 때문에 animal 클래스 안에 해당사항을 넣어, 공통적인 부분만 정의해 놓는다.

class Animal{
public :
    string name; // 개체명
    string cry; // 울음소리
    void walk(){ // 4발로 걷는다.
        cout << "walk with 4 feet";
    }
};

 

2. 캡슐화

정보를 외부로부터 막기 위해 사용한다. 추상화가 필요한 때는 변경사항 발생시이다.
외부에서 객체의 세부내용을 건들이지 못하도록 막기 때문에 수정사항이 생길때, 오류 발생을 줄일 수 있다. 

캡슐화를 하기 위해선 멤버변수, 멤버함수를 정의할때 접근 지정자 private을 이용하면 된다.
public을 사용하게 되면 외부에서 접근이 가능하다.

class Animal{
private : # 접근지정자 private 사용하여 캡슐화
    string name; // 개체명
    string cry; // 울음소리
    void walk(){ // 4발로 걷는다.
        cout << "walk with 4 feet";
    }
};

 

3. 상속성

이미 정의된 클래스(부모 클래스)의 내용을 다시 정의하지 않고도 새로운 클래스(자식 클래스)에 가져올 수 있는 개념이다.
자식 클래스는 부모 클래스의 내용에 더불어 다른 변수와 함수를 추가해서 기능을 확장시킬 수 있다. 

예를들어, 위에서 정의한 Animal 클래스를 Cat으로 확장시킨다고 할때,
Animal은 부모 클래스 Cat은 자식 클래스가 되는 것이다.

Animal 함수 내 모든 멤버가 public 으로 설정 되어있다고 할때, 다음과 같이 상속할 수 있다.

class Cat : public Animal { // 자식클래스 : 부모클래스 
public :
	Cat(string name, string cry) : Animal(string name, string cry) {
    	cry = "meow"
    }
}

 

4. 다형성

각 객체가 가지고 있는 고유한 특성으로 응답할 수 있는 특징이다.

이건 예시로 설명해야 정확하다.
예를들어, add 함수를 구현한다고 할 때 add(1,2) 의 리턴값은 3, add(A,B) 의 리턴값은 AB가 되도록 하고싶을때 이용된다.

void add(int a, int b){
	cout << a + b;
}
void add(string a, string b){
	cout << a << b;
}

 

728x90
반응형

'CS' 카테고리의 다른 글

[컴퓨터 구조] 1장 - 디지털 논리회로(1)  (0) 2022.07.30
[컴퓨터 구조] 컴퓨터의 구조와 역사  (0) 2022.07.25