OOP(Object Oriented Oriented Programming)
객체는 완전한 부품으로 거듭나기위해 자기 자신을 에러로부터 보호하며, 재활용성을 가진다. 그리고 이것에 꼭 필요로하는것만 외부로 나가기때문에
객체는 고기능의 제품을 신속하게 만들수 있다. 한가지 예로
전자 상가에 가면 하드웨어 부품들과 설명서가 포함되어 있는 라디오 조립 키트같은 실습용 제품들이 많이 있다. 중학생 정도만 되면 이런 조립 키트를 사서 설명서대로 기판에 트랜지스터, 저항, 다이오드 같은 부품을 조립하고 납땝하여 라디오 정도는 얼마든지 손쉽게 만들 수 있다. 하드웨어에 대한 지식이 거의 없어도, 각 부품이 정확하게 어떤 동작을 하는지 몰라도 되므로 이 얼마나 생산적인가? 소프트웨어도 이런 식으로 상세한 것을 잘 몰라도 뚝딱 뚝딱 금방 만들 수 있다면 얼마나 좋겠는가? 이것이 바로 OOP가 필요해진 이유이다.
OOP의 특징
- 캡슐화(Encasulation) : 표현하고자 하고 자료와 동작을 하나의 단위로 묶은것으로 객체와 동작이 바인딩되어 하나의 캡슐화가 형성되는것이다.
- 정보은폐 : 객체는 자신의 상태를 기억하기위한 속성과 이를 관리하는 동작을 정의한다. 이중 일부만 사용할수있게 하는것을 정보은폐라한다.
-
추상화(Abstraction) : 현실세계에 사물을 보고 이에 특징과 기능을 가지는지 알아내면 이를 모델링하고, 모델링한것을 가지고, 객체와 동작을 합쳐
캡슐화 시킨다. 이 캡슐화시킨중에도 외부에서 쓸것만 따로 빼는것을 은폐라하고, 이 과정을 거쳐 나온것을 추상화라 한다. 추상화는 외부에서 내부를 볼수없으므로
내부사용자가 손쉽게 자료를 재정의하고 관리할수있다.
- 상속(Inheritance) : 상속은 이미 만들어진 클래스를 파생시켜 선글라스를 정의 하는기법이다.
-
다형성(polymorprism) :같은 호출에따라 상황에따라, 호출하는 응답에 따라 다른 답장을 하는것
특징
간단한 설명
캡슐화
묶는다
정보 은폐
숨긴다
추상화
표현한다
상속
재사용한다
다형성
상황에 따라 달라진다.
-- Again
객체지향은 분석, 설계, 코딩, 테스트의 순서적 절차지향과는 다르게 . 상속, 정형화, 캡슐화, 추상화등의 중요한 개념을 가지고있다.
객체지향은 커피자판기와, 캔자판기 두대를 설치하기보단 하나로 묶어 한 자판기로 사용되어지는것과도 같다.
객체지향에 중요한 4가지를 살펴보자
상속 : 다윈의 진화론을 떠올려본다면 처음에 생물에서 동물과 식물이 나뉘어진다. 거기안에 동물은 포유류, 어류로도 나눠지고, 포유류안에 사람, 호랑이, 코끼리등이있다.
사람은 동물과 생물에의해 상속되어졌다. 즉
생물 {}
동물 : 생물{}
사람 : 동물{} 과 같이 표현되어진다.
다형성 : 절차지향에서 함수에 매개변수를 넣어 어떤 연산을 하는것역시 편리하고 효율적이나 이것이 코드가 길어지면 점점 복잡해진다.
그렇지만 객체지향에서 다형성은 이같은 매개변수(=아규먼트)등을 하나의 메서드로 선언하여 사용해 매개변수에 리턴값이 변하는 형식을 보여준다.
이렇게 하면 코드가 길어지더라도 간단한 코드 몇줄만 넣어주어, 간략화 시킬수있다. 다형성에 기능은 이러한것이다.
다형성은 오버로드, 오버로딩에 의해 구현되는 기법으로 오버로드는 객체안에 함수명은 같지만 매개변수 타임과 개수가 다른것을말하며,
오버라이딩은 함수이름과 매개변수타입이 완전 일치하는것을 말한다.
캡슐화 : 예로 CPU를 생각해보면 외형은 평범하지만 제어에 관련된 복잡한 전자기적 작용이 일어나는데, 기술자는 CPU의 내부적 기능을 몰라도 PC를 만들수있따.
이처럼 컴퓨터 프로그램에서도 어떤 상세 구조를 몰라도 인터페이스만알고있어도 사용가능한것을 캡슐화라고 한다.
(알약 안에 내용물을 알지 않아도 알약이 어떤 기능을 하는지 아는것과 같다)
추상화 : 원, 사각형, 육각형등은 모두 도형에 속하는데, 상속과는 조금 다르게 추상화는 객체지향 프로그램 언어에서 객체를 표현할때 유용하게 사용할수있는 개념이다.
추상화 기법을 이용하면 메모리를 효율적으로 사용할수있다.
클래스 : 클래스는 객체지향에 필요한 최소단위라고 생각하면 된다. 한 반(class)에 학생과 여러 객체들이있듯, class또한 학교안에서 나눠진 독립적인 객체이다.
클래스는 변수와 매서드의 집합으로 구성되있으며, 이러한 객체를 사용하기 위해선 new 키워드를 통한 메모리 객체 인스턴스를 생성해줘야한다.
인스턴스는 클래스라는 형판을 메모리에 초기화시켜주고, 사용할수있게 만드는 것을 말한다.
예를 들어 그릇에 밥을 담으면 밥그릇, 물을 담으면 물그릇, 국을 담으면 국그릇과 같은 역할을 한다.
-
C#의 메모리 구조 : C#은 메서드, 변수, 클래스 객체 등의 값을 저장하는 3개의 메모리 공간을 가지고있다.
메서드영역(메서드바이트코드, 클래스변수), 스택(매개변수, 지역변수), 힙(클래스객체, 배열객체, 문자열 객체)
History
Last edited on 08/03/2009 09:39 by 조재현
Comments (0)