검색결과 리스트
쓰발이의 World에 해당되는 글 363건
- 2010.03.25 전공단어[1]
- 2010.03.22 [C++] static_cast
- 2010.03.22 serialize ( 직렬화 )
- 2010.03.19 [C++] const
- 2010.03.19 [C++] 다양한 생성자 초기화 방법
- 2010.03.19 static 클래스 멤버
- 2010.03.19 inline 함수
- 2010.03.19 namespace
- 2010.03.19 UML 다이어그램 그려 나가기.
- 2010.03.16 클래스 다이어그램( Class Diagram ) 이란?
글
전공단어[1]
resurrect
: (죽은 사람을) 부활시키다. ( 사상, 관례 등을 ) 부활시키다.
straightforward
: 간단한, 쉬운, 복잡하지 않은, (사람,행동이) 솔직한
encapsulation
: 요약
corrupt
: 오류가 생긴; 변경된, 변질된
exploit
: (부당하게)이용하다, 착취하다.
constrain
: to constrain someone or something means to limit their development or force them to behave in a particular way.
incur
: If you incur something unpleasant, it happens to you because of something you have done.
primitive
: Primitive means belonging to a society in which people live in a very simple way, usually without industries or a writing system. ex ) primitive people also danced to get rid of evil spirits.
imply
: If you imply that something is the case, you say something which indicates that it is the case in an indirect way.
exclusive
: If you describe something as exclusive, you mean that it is limited to people who have a lot of money or who belong to a high social class, and is therefore not available to everyone. ex ) He is already a member of Britain's most exclusive club.
: Something that is exclusive is used or owned by only one person or group, and not shared with anyone else. ex ) Language is an exclusive possession of man.
equivalence ( n )
: If there is equivalence between two things, they have the same use, function, size, or value.
capacity ( n )
: Your capacity for something is your ability to do it, or the amount of it that you are able to do. ex ) people's creative capacities.
: The capacity of a piece of equipment is its size or power, often measured in particular units. ex ) an aircraft with a bomb-carrying capacity of 454 kg. / The bus was filled to capacity. 만원이었다.
append ( v )
: When you append something to something else, especially a piece of writing, you attach it or add it to the end of it. ex ) Violet appended a note at the end of the letter.
derive ( v )
: If you derive something such as pleasure or benefit from a person or from something, you get it from them. ex ) A is one of those happy people who derive pleasure from helping others.
: If you say that something such as a word or feeling derives or is derived from something else, you mean that it comes from that thing. ex ) Anna's strength is derived from her parents and her sisters.
export ( v )
: In computing, if you export files or information from one type of software into another type, you change their format so that they can be used in the new software.
ex ) Files can be exported in ASCII or PCX formats.
embed( v )
: If an object embeds itself in a substance or thing, it becomes fixed there firmly and deeply. ex ) One of the bullets passed through Andrea's chest before embedding itself in a wall.
: If something such as an attitude or feeling is embedded in a society or system, or in someone's personality, it becomes a permanent and noticeable feature of it.
arbitrary ( adj ) - subjective, random, chance
: If you describe an action, rule, or decision as arbitrary, you think that it is not based on any principle, plan, or system. It often seems unfair because of this.
retrieve ( v ) - get back, regain, recover....
: If you ~ something, you get it back from the place where you left it. ex ) The men were trying to retrieve weapons left when the army abandoned the island.
: To retrieve information from a computer or from your memory means to get it back. ex ) Computers can instantly retrieve millions of information bits.
dimension ( n ) [daɪmenʃən, dɪm-]
: A particular dimension of something is a particular aspect of it.
ex ) There is a political dimension to the accusations.
: A dimension is a measurement such as length, width, or height. If you talk about the dimensions of an object or place, you are referring to its size and proportions.
vary ( v ) = differ, be dissimilar, disagree,
: If things vary, they are different from each other in size, amount, or degree.
ex ) As they're handmade, each one varies slightly.
'English > Words' 카테고리의 다른 글
전공단어[2] (2) | 2010.06.06 |
---|---|
따르다. (0) | 2009.11.04 |
[Writing Solid Code] Assert yourself 2 (2) | 2009.08.07 |
[Writing Solid Code] Assert yourself 1 (1) | 2009.08.07 |
[General] Words-2 (1) | 2009.07.30 |
글
[C++] static_cast
출처 : http://poorteam.tistory.com/25
'Programming > C++ Language' 카테고리의 다른 글
[C++] 복사 생성자 (0) | 2010.05.31 |
---|---|
[C++] Construct method (0) | 2010.05.27 |
[C++] const (0) | 2010.03.19 |
[C++] 다양한 생성자 초기화 방법 (0) | 2010.03.19 |
static 클래스 멤버 (0) | 2010.03.19 |
글
serialize ( 직렬화 )
일련의 결과 비트들을 직렬화 포맷에 따라 다시 읽었을 때, 원래의 object의 동일한 복사본을 읽을 수 있다. 많은 복잡한 Object 들에서 이 과정은 간단하지 않다.
Wiki 에 내용을 간략하게 번역한 내용이다. 원문은 아래의 링크에서 볼 수 있다.
http://en.wikipedia.org/wiki/Serialization#cite_note-0
'Programming' 카테고리의 다른 글
undefined reference (0) | 2010.03.26 |
---|---|
XML 이란? (0) | 2010.03.26 |
시리얼 통신 (0) | 2009.10.19 |
뉴욕의 프로그래머 (0) | 2009.09.04 |
[Network]슬라이딩 윈도우( Sliding window ) (0) | 2009.09.04 |
글
[C++] const
int Time::getHour() const
{
}
아래는 상수 함수와 비상수 함수에서의 상수/비상수 멤버함수를 호출하는 예를 보여준다.
const Time noon();
wakeUp.setHour( 10 );
noon.setHour( 10 );
wekeUp.getHour();
noon.getHour();
wakeUp.printStandard();
noon.printStandard();
위에서 set/print 함수는 비상수 함수이고, get 함수는 상수 함수임을 먼저 알린다.
빨간 부분으로 되어 있는 부분에 컴파일 에러가 생기게 된다. 이유는, 비상수 객체에서는 상수/비상수 함수를 모두 호출 시킬수 있는 반면에, 상수 객체에서는 비상수 함수를 일체 사용할 수 없기 때문에 에러가 뜨고, 실제로 printStandard 함수에서 값을 변경하지 않더라도 확실하게 값을 변화시키지 않는다고 보장을 하지 못하기 때문에 컴파일 에러를 발생한다.
class Increment{
private:
Increment::Increment( int c, int i ) : count( c ), increment( i )
{
}
const 데이터 멤버와 참조되는 데이터 멤버는 멤버 초기값 구문을 사용하여 초기화 하여야 한다. const 변수를 Increment 생성자 스코프 안에서는 초기화를 할 수 없다. 위와 같이 초기화를 하면 생성자 본체 시작전에 선언과 동시에 초기화를 하게 된다.
그리고, Increment 의 부모 클래스가 있는 경우, 부모 클래스의 생성자가 수행되기 전에 멤버 초기값 구문이 실행된다.
'Programming > C++ Language' 카테고리의 다른 글
[C++] Construct method (0) | 2010.05.27 |
---|---|
[C++] static_cast (0) | 2010.03.22 |
[C++] 다양한 생성자 초기화 방법 (0) | 2010.03.19 |
static 클래스 멤버 (0) | 2010.03.19 |
namespace (0) | 2010.03.19 |
글
[C++] 다양한 생성자 초기화 방법
Time::Time( int hr, int min, int sec )
{
인자가 없는 디폴트 생성자를 호출 하더라도, 일괄된 값으로 초기화되는 것을 보장해 준다.
2. Time t2( 2 );
3. Time t3( 21, 34 );
4. Time t4( 12, 25, 42 );
위와 같은 경우에는 t1은 모든 인수가 default 값으로 초기화가 된다. t2는 hr 이 2가 되고, min, sec 는 default 로 사용되고, t3는 sec 만 default 로 사용을 하게 된다. t4 는 모든 값이 지정된 값으로 초기화를 하게 된다.( 여기서 주의할 점은, SetTimer 가 없어도 기본값으로 초기화 되는 것이 아니라, 생성자의 인자에 값이 없더라도 인자값을 초기값으로 넣어주는 것이다. )
아래는 생성자를 또 다른 방법으로 사용할 수 있는 예로, 상수를 초기화 할 때 주로 사용을 한다.
{
const int increment;
Time::Time( int c, int i ) : count( c ), increment( i )
{
인자로 넘어온 c, i 값을 이용하여, 비상수 멤버와 상수 멤버를 초기화하는 것이다. count( c ), increment( i ) 는 선언과 동시에 초기화가 되는 것으로 Time 생성자 본체가 시작되기 전에 수행이 되게 된다.( 부모 class 가 있는 경우, 부모 class 의 생성자가 호출 되기 전에 값이 초기화 된다. 값 초기화 > 부모 class 생성자 호출 > 자신 생성자 호출 ) 상수인 increment 는 Time 본체 안에서는 초기화 될 수 없고, 위와 같은 방법으로 초기화 될 수 있다.
'Programming > C++ Language' 카테고리의 다른 글
[C++] static_cast (0) | 2010.03.22 |
---|---|
[C++] const (0) | 2010.03.19 |
static 클래스 멤버 (0) | 2010.03.19 |
namespace (0) | 2010.03.19 |
연산자 오버로딩 (0) | 2009.09.30 |
글
static 클래스 멤버
스타크래프트를 예로 들었을 때, Terran Unit 이라는 상위 클래스가 있고, 자식 클래스가 Marine, Madic 이 있다고 했을 때, 테란의 전체 유닛의 수를 알기 위해서는 Terran Unit 에 static int nUnitNum; 이 있으면, 테란의 Marine 이나 Madic 이 생성/소멸 때 마다 소멸자에서 nUnitNum 을 증가/감소 시켜주면 테란의 총 유닛의 수를 알수 있다. 또는 Supply 라는 클래스에 int static nSuplNum 을 두고, Supply 가 생성/파괴 될 때 마다, 이 값을 증가/감소 시켜주면, 총 Supply 개수를 알수 있게 된다.
이와 같이, 데이터가 하나의 복사본만으로 충분하다면, static 데이터 멤버를 사용하여 메모리 공간을 절약할 수 있다.
static 멤버는 public, protected, private 로 선언될 수 있으며, 해당 클래스 정의의 몸체가 아닌 파일 스코프에서 반드시 단 한 번만 초기화되어야 한다. 클래스의 private / protected static 멤버는 그 클래스의 public 멤버 함수나 friend 를 통해서 접근되어야 한다. 클래스의 객체가 없을 때에도 접근이 가능한데 이는 클래스이름::변수이름 의 형식으로 접근 가능하다.
class Employee{
public:
-- .cpp --
#include .h
int Employee::count = 0; // static 멤버의 정의와 초기화
int Employee::getCount()
{
'Programming > C++ Language' 카테고리의 다른 글
[C++] const (0) | 2010.03.19 |
---|---|
[C++] 다양한 생성자 초기화 방법 (0) | 2010.03.19 |
namespace (0) | 2010.03.19 |
연산자 오버로딩 (0) | 2009.09.30 |
순수 가상 함수 (0) | 2009.09.26 |
글
inline 함수
함수 정의에서 함수의 반환 타입 앞에 한정자 inline 은 컴파일러에게 함수 호출을 피하기 위하여 함수 호출 위치에 (가능하다면) 함수 코드의 복사본을 만들도록한다. 함수가 호출 될 때 매번 그 함수의 단일 복사본에 제어를 전달하는 대신 프로그램 내부에 그 함수의 다중 복사본을 삽입한다.
inline 한정자는 작고 자주 사용되는 함수에만 사용해야 하고, 실행시간을 줄여 주지만 프로그램의 크기를 증가시킬 수 있다.
{
글
namespace
#include <Turboc.h>
int i; // 전역 네임 스페이스 소속
namespace A {
int i; // A 소속
}
void func()
{
int i;
i=1; // 지역변수 i
::i=2; // 전역 네임 스페이스의 i
A::i=3; // A 네임 스페이스의 i
}
void main()
{
func();
}
위와 같이 사용을 하면 한 namespace 안에서 같은 이름의 변수가 있더라도, 각 영역의 변수를 가져와서 사용을 해서 중복을 막 을 수 있다.
namespace 의 규칙
1. 네임 스페이스는 반드시 전역 영역에 선언해야 한다. 함수안에 선언할 수 없다는 뜻이며 다음과 같은 지역 네임 스페이스는 허가되지 않는다.
2. 네임 스페이스끼리 중첩 가능하다.
3. 네임 스페이스는 항상 개방되어 있다. 그래서 같은 네임 스페이스를 여러 번 나누어 명칭을 선언할 수 있다. 꼭 한꺼번에 몰아서 네임 스페이스내의 모든 명칭을 일괄 선언해야 하는 것은 아니다.
namespace A {
double i;
}
namespace B {
int i;
}
namespace A {
char name[32];
}
4. 여러 개의 모듈로 나누어진 프로젝트를 개발할 때는 보통 헤더 파일과 구현 파일을 따로 작성한다. 네임 스페이스안에 함수를 정의할 때 헤더 파일에 원형만 선언하고 구현 파일에 함수의 본체를 작성한다.
using 지시자
- namespace에 있는 변수나 함수를 ㅁ사용 할 때, 매번 namespace 를 쓰고, 변수나 함수이름을 써야되서 번거로움이 있는데, using 지시자를 써서 이를 생략 할 수 있다.
- using 지시자가 영향을 미치는 범위는 이 지시자가 있는 영역에 국한된다. 특정 함수나 블록 안에 using 지시자를 사용하면 이 블록에서만 지정한 명칭을 바로 사용할 수 있으며 그외의 영역에서는 여전히 소속 지정이 필요하다. 다음 코드를 보자.
'Programming > C++ Language' 카테고리의 다른 글
[C++] 다양한 생성자 초기화 방법 (0) | 2010.03.19 |
---|---|
static 클래스 멤버 (0) | 2010.03.19 |
연산자 오버로딩 (0) | 2009.09.30 |
순수 가상 함수 (0) | 2009.09.26 |
가상 함수의 활용 (0) | 2009.09.25 |
글
UML 다이어그램 그려 나가기.
다음으로, 이 Diagram 을 기반으로 Class Diagram 을 그려보자. 객체를 위한 Class 및 Class 들의 관계 사이에 Interface 를 넣는 등의 작업을 하면 된다. 이 때, 코드를 마음속에서 그려볼 수 있는 힘은 다이어그램 작업을 하는데 매우 중요하다. 긴 코드 대신 다이어그램을 이용하는 것이지, 다이어그램으로 코드를 대신하려는 것이 아니다. 다이어그램을 그려놓고 그 다이어그램이 나타내는 코드를 마음속으로 그려 볼 수 없다면, 지금하는 작업을 중단하고 어떻게 그 다이어그램을 코드로 바꿀수 있는지 찾아내라.
여기서 다이어그램은 단순하고 깔끔하게 유지하라. 세부적으로 할 수록 복잡할 뿐이지 생산성에 오히려 저해가 된다. 다이어그램은 다른 사람과 의사 소통을 할 때, 설계에 관한 문제점을 풀 때 도움이 되는 것이다.
언제 다이어 그램을 그릴 것인가?
- 모든 것을 다이어그램으로 그려야 한다는 규칙을 만들지 마라.
- 설계 아이디어가 분분할 경우, 의견을 모으거나 여러 설계 아이디어를 시도해보고 싶을 때 다이어그램을 그려보라.
- 누군가에게 코드 일부분의 구조를 설명할 때 다이어그램을 그려라.
다이어그램을 그리지 말아야 할 경우 ( ? : 잘 와닿지는 않는다. )
- 코딩시작전에 설계 단계의 포괄적인 문서를 만들기 위해서 다이어그램을 그리지 마라. 이런 문서는 거의 언제나 하등 쓸모가 없으며 시간만 엄청나게 잡아 먹는다.
- 다른 사람에게 어떻게 코딩을 해야 할지 알려주기 위해 다이어그램을 그리지 마라.
문서화는 어떻게 할까?
- 문서화는 정말 중요하지만, 양이 너무 지나칠 경우 문서의 바다에서 해맬수가 있다. 복잡한 프로토콜, 복잡한 관계형 데이터베이스의 스키마, 재사용가능한 복잡한 프레임워크도 마찬가지다. 하지만, 이것들이 모두 UML을 몇백 쪽이나 요구하지는 않다. 소프트웨어의 문서는 반드시 짧고 핵심을 찔러야 한다. S/W 문서의 가치는 그 분량에 반비례한다.
- 문서에는 중요한 모듈의 고차원 구조에 대한 UML 다이어그램, 관계형 스키마의 ER 다이어그램, 한 쪽이나 두 쪽 분량의 시스템을 빌드하는 방법, 테스트 방법 설명, 소스 코드 컨트롤 방법 설명 등이 포함.
- javadoc 도구가 문서만드는데 훌륭한 도구.
'Programming > UML' 카테고리의 다른 글
클래스 다이어그램( Class Diagram ) 이란? (0) | 2010.03.16 |
---|
글
클래스 다이어그램( Class Diagram ) 이란?
사각형은 클래스를 나타내고, 화살표는 관계를 나타내는데, 여기서 이 화살표는 연관( Association ) 관계를 나타낸다. 연관 관계는 한쪽 객체가 다른 쪽 객체를 참조하고, 그 참조를 통해 그 객체의 메소드를 호출함을 나타내는 단순한 데이터 관계이다.
연관 위에 쓴 이름은 참조를 담는 변수의 이름과 대응 된다. 즉, topNode 를 통해 TreeMap 은 TreeMapNode 객체를 참조하여, 해당 메소드를 호출 한다.
화살표 옆에 쓴 숫자는 인스턴스의 개수를 나타낸다. 만약, 이 숫자가 1보다 크다면 어떤 컨테이너를 사용한다는 뜻인데, 컨테이너로 보통 배열을 사용한다.
UML은 대규모 소프트웨어 구조의 로드맵을 만들 때 유용하다. 어떤 클래스가 다른 클래스에 의존하는지 개발자가 빨리 파악할 수 있다.
'Programming > UML' 카테고리의 다른 글
UML 다이어그램 그려 나가기. (0) | 2010.03.19 |
---|