[숫자야구]






[짝맞추기]



[빙고게임]

'Project > 콘솔프로젝트' 카테고리의 다른 글

도서관리 - 회원가입  (0) 2016.09.28

절차지향 프로그래밍

-       큰 문제를 작은 문제 단위로 쪼개어 순차적으로 진행되는 형태

 

객체지향 프로그래밍

-       기능 단위로 구분하여 각 기능들을 조립하여 하나의 프로그래밍을 만드는 형태

 

등장배경

하드웨어가 빨라지고 대용량화 되는 시기에 소프트웨어가 하드웨어의 성장을 따라가기 힘든 상황이 발생하였고 그 상황이 바로 소프트웨어의 위기이다

그에 따라 소프트웨어의 대응책으로 여러 가지 개발방법이 생겨 났고 그 중에 가장 탁월한 기법인 객체지향적 프로그래밍(Object Oriented Programming)방식이다

 

객체지향적 프로그래밍(Object Oriented Programming) 특징

캡슐화 ( Encapsulation )

-       데이터와 기능을 하나의 단위로 묶는 과정

Why?

-       독립적이며 프로그램의 부품으로 활용

정보 은폐 ( Information Hiding )

-       외부에서 사용하는 기능만 제공하고 나머지는 숨기는 것

Why?

-       객체의 손상을 방지하기 위해서

추상화 ( Abstraction )

-       캡슐화와 정보 은폐를 통해 외부의 사용자에게 제공하는 인터페이스를 설계하는 과정

Why?

-       객체의 효율적이고 안전한 사용을 위해서

 

상속 ( Inheritance )

-       추상화를 통해 만들어진 기본 클래스 ( Based Class )를 기반으로 모든 속성이나 기능을 물려 받아 새로운 클래스를 만드는 것. ( 파생 클래스 : Derived Class )

Why?

-       필요한 기능을 추가 / 변경 / 제거 하여 새로운 클래스를 만들 수 있기 때문에

 

다형성 ( Polymorphism )

-       똑같은 호출이라도 상황에 따라 같거나 다른 동작을 수행 하는 것.

Why?

-       코드의 일관성

 

접근지시자 ( Access Specifier )

-       클래스 멤버들의 허용 범위를 지정하는 것

-        

클래스의 기본 접근권한은 private

 

클래스 내부

상속 클래스

외부 클래스

public

가능

가능

가능

protected

가능

가능

불가능

private

가능

불가능

불가능


 바인딩 ( Binding )



일반적으로 속성과 개체 사이 또는 연산과 기호 사이와 같은 연관 ( Association ) 

변수에 변수와 관련된 속성을 연관시키는 것
값들이 확정이 되어 구속(Bind) 된 상태 

함수 호출된 부분에서 함수가 위치한 메모리 번지를 연결

 




 바인딩 타임 ( Binding Time )



프로그램에서 변수들이 갖는 속성이나 값이 완전히 결정되는 시간.
이름에 속성이 연결되는 시간

 




 바인딩 타임의 종류 ( Variety of Binding Time )



1. 언어 정의 시간 ( Language Definition Time ) 

언어에서 허용되는 대부분의 자료구조나 프로그램 구조 등을 확정.
ex) int를 정수형으로 나타낸다고 정의

2. 언어 구현 시간 ( Language Implementation Time ) 

언어를 정의할 때 이루어 지는 형태(표현 자리 수, 범위, 크기 등이 정해짐)
렉싱 ( Lexing ) : 키워드를 문법대로 자르는 것

ex) int a 를 4바이트로 결정, int, char 등 사전에 정의된 키워드를 렉싱

3. 컴파일 시간 ( Compile Time )

원시프로그램 을 번역할 때 이루어지며 . Data, Stack 등 메모리에 들어갈 변수가 정해짐.
정적바인딩, 변수의 이름 또는 형과 프로그램 문장 구조

고레벨 언어를 Binary File , Obj 파일로 전환 

작동) Obj 파일로 변환하는 과정에서 코드가 문법에 맞는지 검사 (Parsing)


4. 링크 시간 ( Link Time )

프로그램을 라이브러리와 링크할 때 이루어 지는 형태

사용 가능성을 조사하고, 라이브러리와 모듈을 합친다.


5. 적재 시간 ( Load Time )

변수를 메모리 로 적재할 때 (주소가 결정됨)

운영 체제에서 메모리로 프로그램을 불러와 실행


6. 실행 시간 ( Run Time )

프로그램을 실행 할 때 이루어지며 변수의 값을 확정

변수의 기억장소 할당
실행 부터 종료 까지 변수 값을 바인딩

 




 정적 바인딩 ( Static Binding )



실행 시간 전에 일어나고, 실행 중에 변하지 않는 상태로 유지되는 바인딩

ex) int a; // 정수 타입(Integer Type)을 이름 'a'에 정적으로 바인딩

 




 동적 바인딩 ( Dynamic Binding )



실행 시간 ( Run-Time ) 중에 일어나거나 프로그램 실행 과정에서 변경되는 것

(정적 바인딩한 변수들도 실행 중에 변경 되면 동적 바인딩이다)

ex) int * ptr = malloc( sizeof(int) * 10 ); 

 




 할당 ( Allocation )



기억장소 할당 : 변수에 메모리 공간을 바인딩( Binding )하는 과정

 




 정적 할당 ( Static Allocation )



메모리 에 적재될 크기를 미리 아는 것

Run-Time 에 각 타입에 맞는 메모리 영역 ( Segment ) 에 할당

 



 동적 할당 ( Dynamic Allocation )



외부환경에 의해 변화하여 크기를 미리 알 수 없는 것

명시적인 명령어에 의해 실행되는 할당

동적할당이 공간은 힙영역( Heap Segment )

포인터나 참조 변수를 통해 접근이 가능

 




 바인딩, 바인딩의 종류, 할당에 대해 알아보았다

 바인딩은 변수의 값이 실제 값과 묶이는 것이며 묶인 속성과 값이 완전히 결정되는 시간이 바인딩 타임이다.

 할당에는 정적할당과 동적할당이 있다.

출처 : http://wookss-blog.tistory.com/6 / http://people.cs.clemson.edu/~turner/courses/cs428/summer00/webct/content/pz/ch2/ch2_5.html


'프로그래밍 > 프로그래밍 기초' 카테고리의 다른 글

메모리 구조  (0) 2016.03.23
메모리 관리기법  (0) 2016.03.21

+ Recent posts