School Study

[BSP]업무일지-20100614 - 임종현

룸훼훼 2010. 6. 14. 23:38
반응형
C++ 객체지향 프로그래밍

객체지향 프로그래밍이란?
- 프로그램을 만드는 방법중 하나이다. 만약 자동차를 예로 들면 규격화된 부품을 조립해서 완성된 차를 만드는
공정이라고 생각하면 된다. 윈도우 프로그램중 하나인 그림판을 비교해보면  "엔진 = 선긋기", "지우기 = 라이트"
"글쓰기 = 범퍼" , "색 = 문짝" 등으로 비유할수 있다. 개발자 혼자 기능을 다 만드는 것이 아니라 각각의 기능을
별로도 제작하여 한곳에서 조립하는 것이다. 여기서 각각의 기능들이 바로 객체인 것이다.

장점
◎개발자는 하나의 부품 즉, 객체에만 신경을 쓰면된다.
◎결합하여 기능에 문제가 생기더라도 문제가 있는 기능만 교체할수 있다.
◎다른 프로그램을 만들때에도 사용할수 있다.
하지만 이러한 장점에도 중요한 제약 사항이 있다.
객체간의 연결되는 부분은 약속이 되어 있어야 한다. 이약속만 지키면 나머지 부분에 있어서 다른 객체는 신경
쓰지 않아도 된다. 이렇게 약속된 부분을 "인터페이스"라 한다.

클래스와 객체?
-클래스(class)
캡슐화, 다양성, 상속성을 기본응로 객체의 속성(멤버변수)및 메소드를 정의한 데이터 타입이다.
객체를 생성하는 Template로 볼수 있으며, 실제 메모리의 할당은 일어나지 않는다.

-객체(object)
클래스에 의해 정의된 데이터 타입을 이용하여 실제 생성된 인스턴스이다.
실제 메모리에 할당이 이루어진다.
하나의 클래스에 대하여 여러개의 객체가 생성될수 있다.

**인스턴스(instance)**
일반적으로 어떤 집합에 대해서, 그 집합의 개별적인 요소. 객체 지향 프로그래밍(OOP)에서, 어떤 등급에 속하는
각 객체를 인스턴스라고 한다. 예를 들면 ‘목록(list)’이라는 등급을 정의하고 그 다음에 ‘본인 목록(my list)’이라는
객체를 생성(기억 장치 할당)하면 그 등급의 인스턴스가 생성된다. 또한 변수가 포함되어 있는 어떤 논리식의 변수에
구체적인 값을 대입하여 식을 만들면 원래 식의 인스턴스가 만들어진다. 이런 의미에서 인스턴스를 실현치라고 한다.

**Template**
똑같은 종류의 클래스 객체를 생성하는 형틀을  템플릿 이라 한다.

특징~!
-캡슐화
서로 관련된 데이터와 이 데이터의 조작으 위한 함수를 하나의 그룹으로 묶어주는 과정이다.
캡슐화된 대상데이터 및 함수를 멤버라고 한다.(멤버함수, 멤버변수)
접근제어를 통해 외부에 공개할 멤버와 그렇지 않을 멤버를 정의 할수 있다.
이것이 정보 은닉이다. 예를 들면 자동차의 연식 이름, 전진 후진 등)

-다향성
하나의 이름으로 상황에 따라, 각각다른 기능을 구현할수 있는 특징이 있다.
중복정의 및 재정의를 통해 구현된다.(overloding. overriding)
함수 및 일반연산자에도 적용된다.

-상속성
상속받는 객체가 상속하는 객체의 특성을 물려 받는 개념이다.
상속받은 객체의 멤버를 그대로 이용할수 있고 새롭게 추가도 할수 있다.
상속받은 멤버의 재정의도 가능하다.


오후
ATMaga128을이용.
//
#define DDRF (*(volatile unsigned char *)0x61)
#define PORTF (*(volatile unsigned char *)0x62)

#define DDRD (*(volatile unsigned char *)0x31)
#define PORTD (*(volatile unsigned char *)0x32)
#define PIND (*(volatile unsigned char *)0x30)

#define DDRC (*(volatile unsigned char *)0x34)
#define PORTC (*(volatile unsigned char *)0x35)
#define PINC (*(volatile unsigned char *)0x33)

#define LED_ON(LED) PORTF=PORTF&(~(0x01<< LED))                                            
#define LED_OFF(LED) PORTF=PORTF|(0x01<< LED)                                           

void delay(int a)
{
 int us = 0; int ms = 0;
 while(1)
 {
  us++;
  if(us >= 1000)
  {
   ms++;
   us = 0;
  }
  if(ms >= a)
  {
   break;
  }
 }
}

//1번 LED 전체 점멸.
int main(void)
{
 DDRC = 0x0ff;
 PORTC = 0xff;
 unsigned char cnt;
 cnt = 1;
 
 while(1)
 {
  if(cnt)
  {
   PORTC = 0xff;
   cnt = 0;
   
  }
  else
  {
   PORTC = 0x00;
   cnt = 1;
  }
  delay(300);
 }
 return 0;
}

//3번led 깍빡증가
/*int main(void)
{

 DDRC = 0xff;
 PORTC = 0xff;
 unsigned int cnt;
 cnt = 0x01;
 for(;;)
 {
   
   PORTC = ~cnt;
   
   
   if(cnt==0x00)
   {
    cnt = 0x01;
   }
   
   delay(500);
   PORTC= 0xff;
   delay(500);
   cnt=cnt<<1;
 }
 return 0;
}

//2번  0부터 255까지 led 증가
/*int main(void)
{
 unsigned int us = 0;
 unsigned int ms = 0;
 
 DDRC = 0x0ff;
 PORTC = 0xff;
 unsigned char cnt;
 cnt = 0x00;
 for(;;)
 {
  PORTC = ~cnt; /보수 취해줌
  ++cnt;// 0부터 1씩 증가
  delay(300);
  
  if(255==cnt)//255까지 카운트 되면
  {
   cnt = 0x00; // 꺼짐
  }
  
  
 }
 return 0;
}*/
 

반응형