객체 지향과 절차지향

서현진·2022년 9월 22일
0
post-thumbnail

절차 지향(procedural programming)

1.절차지향의 목록에는 루틴,서브루틴,메소드,함수가 존재한다.
루틴은 main문을 의미한다.
서브루틴은 main문에서 정의한 코드 블럭이 아닌 것중 반환값이 존재하지 않는것이다.
함수는 main문에서 정의한 코드 블럭이 아닌 것중 반환값이 존재하는 것이다.
2.
하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 방식으로 설계된다.
비교적 작은 규모의 작업을 수행하는 함수(function)를 생성한다.
인수(parameter)와 반환값(value)으로 명령을 전달하고 수행한다.
객체지향 프로그래밍과의 가장 큰 차이점으로 데이터와 함수를 별개로 취급한다.
특정 기능을 수행하려면 그 일을 해주는 메소드를 직접 호출해야 한다.

객체 지향(object oriented programming)

1.대립되는 관계가 아니다.
절차지향의 부족한점을 객체지향이 보충해준다.

가장 큰 차이점은 절차지향엔 함수가 존텍스트재하고
객체지향엔 함수도 있지만 오브젝트가 존재한다.

다수의 기능들을 프로그램에 넣기 시작하면서 함수가 발전했다.
그러나 함수들의 생성으로 이전보다 효율성이 높아졌지만 다수의 함수가 프로그램 상에서 존재하게 되었고 또다른 문제로 발전하였다.

서로 연관된 함수와 변수를 그룹핑을 하기 시작했다.

2 객체지향의 가장 큰 특징 4가지를 설명해 보겠다.
2-1)encapsulation
데이터와 함수를 캡슐 혹은 컨테이너 안에 넣는것을 의미한다.
여기서의 캡슐은 class를 의미한다.
정의될 때 말고 정보수정의 결정하는 권한을 제공한다.
원하는 정보를 숨길 수 도 있다.
예를 들어 어떤값을 구할 때의 수식을 감추고 싶다면 그 수식을 캡슐안에 넣는다면 우리는 그 수식을 숨길 수 있다.
2-2)inheritance
만약 우리가 같은 속성을 가진 클래스를 두개를 만들어야하는 상황이 있다고 가정해보자 이때만약 두 클래스 따로 정의 할 수 있지만 비효율적이기 때문에 우리는 같은 속성을 가진 클래스를 만들고 그 클래스에 상속된 두 개의 클래스를 만든다면 더욱이 효과적인 코드를 짤 수 있다.
2-3)abstraction
c++의 권위있는 학자는 추상화를 "구현 세부 정보를 숨기는 일반 인터페이스를 지정하는 행위"라고 정의한다.
예를 들어 추상화는 자동차에는 모두 핸들,브레이크,기어가 있다. 하지만 우리는 어떤 장치들이 어떤 역할을 하는지만 알지 어떤 원리로 돌아가는지 알필요를 느끼지 못한다. 이처럼 추상화도 세부실현 정보를 모두 숨긴채 사용할 수 있다. 추상화의 장점은 빠른 정보 수정이 가능하다는 것이다.
2-4)polymorphism
poly=다양성,morphos=형태를 의미한다.
다양성을 이해하기 위해선 상속에 대한 이해가 필요하다. 상속에서 만약 다른 두 클래스가 나왔다면 그 부모 클래스에서 가진 메소드를 자식클래스에서 사용한다고 할떄 두 자식 클래스 모두 같은 방식으로 할 것 이다.하지만 우리는 다양성이란 특징을 이용해 두 자식클래스의 메소드를 다른 방식으로 변환 할 수 있는 성질을 다양성이라고 부른다 하지만 만약 부모클래스에서 정의된 메소드가 문자열일때 자식클래스에서 메소드를 다른 자료형으로 바꾸는것은 불가능하다.
3
객체지향이란 어떤 프로그래밍 방식,방법론이다
프로그래밍은 컴퓨터의 한정된 자원을 가지고 하는 행위이다.또한 모든 자원에게 각각의 명령을 내려주어야 한다. 이러한 일련의 과정은 만약 하나의 자원마다 각각 지시한다면 매우 피곤한일이 될 것 이다. 위 문제점을 해결하고자 나온 개념이 클래스이다. 클래스는 어떤 일을 처리하기 위해 필요한 정보들을 묶어둔 것과 같다. 예를 들어 만약 컴퓨터의 한 자원에게 청소를 시킨다고 해보자(이런일은 실제로 존재하지 않겠지만 어디까지나 가정이다)이때 청소를 어떻게 하고 어떤 도구를 이용해야하며 언제까지 해야하는 등 청소를 실행하기 위한 자료들이 많이 존재하고 이러한 정보들을 각각의 자원들에게 알려주어야하는데 만약 위 정보가 하나의 틀로 묶여저 있다면 각각의 자원들에게 그 틀만 전달된다면 모두가 원하는 일을 행할 수 있을것이다.
상속은 물려받는것 인터페이스는 장착하는 것 이다.
4

절차지향의 참고자료
1.https://kevinkim95-dev.tistory.com/2
2.http://www.incodom.kr/%EC%A0%88%EC%B0%A8_%EC%A7%80%ED%96%A5
객체지향의 참고 자료
1.https://www.youtube.com/watch?v=dy9yQIx38u8
2.https://www.youtube.com/watch?v=IeLWSKq0xIQ
3.https://www.youtube.com/watch?v=cg1xvFy1JQQ&t=541s
4.https://www.youtube.com/watch?v=vrhIxBWSJ04&t=33s
5.https://www.youtube.com/watch?v=vrhIxBWSJ04&t=33s
6.https://kevinkim95-dev.tistory.com/2

0개의 댓글

관련 채용 정보