- 새싹교실/2012/startLine . . . . 150 matches
* 입, 출력 함수(printf, scanf)와 테스트 함수(assert).
* 왜 테스트 함수를 써야 하는가.
* 정확하게 알지 못 하는 부분들(함수, call by value, call by reference, 구조체, 포인터)
* 서민관 - 간단하게 재현이가 C문법 알고있는 부분 알아보기, 함수 만들어보기, 전체적인 계획 설명, gcc 사용법. 일단 제어문과 간단한 함수 문법까지도 알고 있는 것 같다. 어제 일도 있어서 긴장을 많이 했는데 그래도 생각보다 어렵지는 않았다. 앞으로는 좀 더 예제등을 준비해야겠다.
* 서민관 - 제어문의 사용에 대한 수업(if문법, switch.. for...) 몇몇 제어문에서 주의해야 할 점들(switch에서의 break, 반복문의 종료조건등..) 그리고 중간중간에 쉬면서 환희가 약간 관심을 보인 부분들에 대해서 설명(윈도우 프로그래밍, python, 다른 c함수들) 저번에 생각보다 진행이 매끄럽지 않아서 이번에도 진행에 대한 걱정을 했는데 1:1이라 그런지 비교적 진행이 편했다. 그리고 환희가 생각보다 다양한 부분에 관심을 가지고 질문을 하는 것 같아서 보기 좋았다. 새내기들이 C를 배우기가 꽤 힘들지 않을까 했는데 의외로 if문이나 for문에서 문법의 이해가 빠른 것 같아서 좀 놀랐다. printf, scanf나 기타 헷갈리기 쉬운 c의 기본문법을 잘 알고 있어서 간단한 실습을 하기에 편했다.
* 함수의 역할과 인자/리턴 타입에 따른 함수의 종류.
* 함수의 사용.
* swap 함수를 통해서 알아본 현재 시점에서 함수의 문제.
* 간단한 이전 시간(if문, 반복문)의 복습과 배열의 사용에 대해 알아보았다. 그리고 이번 시간에 주로 한 내용은 함수가 왜 필요한지와 함수를 만드는 법, 함수를 사용하는 법 등이었다. 개인적으로는 함수를 꽤 중요하게 생각하는 만큼 함수의 필요성을 잘 캐치해 줬으면 좋겠다. 그리고 새삼 드는 생각이지만 환희의 질문이 중요한 부분을 잘 찌른다는 생각이 든다. 별다른 언급도 없었는데 함수 내에서 변수의 scope나 함수 내부의 이름 겹침 등에 대한 질문이 있었다. 그리고 중간에 함수 사용의 예제로 printf문을 약간 이상하게 쓴 코드를 보여줬는데 의외로 감을 잘 잡은 것 같았다. 현재 진행상황으로는 다음에 포인터를 다뤄야 할텐데 함수를 쓰는 것을 조금 더 연습을 시킬지 바로 포인터를 나갈지 고민이다. 당장 포인터를 했다가 어려워하지 않을까 모르겠다. - [서민관]
- 함수란? 함수의 정의, 만드는 예제
* 재현, 성훈이의 함수에 대한 지식 확인.
* swap 함수를 만들어보고 문제점 확인.
* 포인터의 개념, 프로그램 실행시 메모리의 구조.
* malloc 함수를 이용한 메모리 할당.
* 배열과 포인터의 관계.
* 처음에 간단하게 재현, 성훈이의 함수에 대한 지식을 확인했다. 그 후에 swap 함수를 만들어 보고 실행시의 문제점에 대해서 이야기를 했다. 함수가 실제로 인자를 그대로 전달하지 않고 값을 복사한다는 것을 이야기 한 후에 포인터에 대한 이야기로 들어갔다. 개인적으로 새싹을 시작하기 전에 가장 고민했던 부분이 포인터를 어떤 타이밍에 넣는가였는데, 아무래도 call-by-value의 문제점에 대해서 이야기를 하면서 포인터를 꺼내는 것이 가장 효과적이지 않을까 싶다. 그 후에는 주로 그림을 통해서 프로그램 실행시 메모리 구조가 어떻게 되는지에 대해서 설명을 하고 포인터 변수를 통해 주소값을 넘기는 방법(call-by-reference)을 이야기했다. 그리고 malloc을 이용해서 메모리를 할당하는 것과 배열과 포인터의 관계에 대해서도 다루었다. 개인적인 느낌으로는 재현이는 약간 표현이 소극적인 것 같아서 정확히 어느 정도 내용을 이해했는지 알기가 어려운 느낌이 있다. 최대한 메모리 구조를 그림으로 알기 쉽게 표현했다고 생각하는데, 그래도 정확한 이해도를 알기 위해서는 연습문제 등이 필요하지 않을까 싶다. 성훈이는 C언어 자체 외에도 이런저런 부분에서 질문이 많았는데 아무래도 C언어 아래 부분쪽에 흥미가 좀 있는 것 같다. 그리고 아무래도 예제를 좀 더 구해야 하지 않을까 하는 생각이 든다. - [서민관]
* 포인터의 기초와 포인터를 이용한 swap 함수 구현, 값 변환. 그리고 malloc의 형태 기초와 좀 더 쉽게 쓰는 법 익힘. 다음엔 malloc을 이용한 응용프로그램 구현을 해보고 싶다. - [최재현]
* 포인터의 정의, 포인터 변수의 정의, malloc 함수, fflush() 함수, getchar() 함수, 메모리의 heap과 stack 영역, (int)a와 *(*(int a))의 차이, 포인터의 OS별 크기(DWORD 크기를 따라간다. 32bit/64bit),
해봐야 할 것 - 디버깅, 가변인자함수 조사, 복습. - [이성훈]
* swap 함수에 대해서 복습.
- MoreEffectiveC++/Exception . . . . 86 matches
귀여븐 동물들 클래스를 만들어 보자.
일단 여러분은 파일에서 부터 puppy와 kitten와 키튼의 정보를 이렇게 읽고 만든다. 사실 Item 25에 언급할 ''virtual constructor''가 제격이지만, 일단 우리에 목적에 맞는 함수로 대체한다.
pa에 해당하는 processAdoption()은 오류시에 exception을 던진다. 하지만, exception시에 해당 코드가 멈춘다면 "delete pa;"가 수행되지 않아서 결국 자원이 새는 효과가 있겠지 그렇다면 다음과 같이 일단 예외 처리를 한다. 물론 해당 함수에서 propagate해주어 함수 자체에서도 예외를 발생 시킨다.
여기에서 재미있는 기법을 이야기 해본다. 차차 소개될 smart pointer와 더불어 Standard C++ 라이브러리에 포함되어 있는 auto_ptr template 클래스를 이용한 해결책인데 auto_prt은 이렇게 생겼다.
예외 발생시에 함수가 종료되면 auto_ptr상의 객체는 무조건 해제된다.
자자 예를들어서 이런 함수에서 예외 처리를 해야할것이다.
이렇게 해도 여전히 문제는 남는다. 무엇이냐 하면, 만약 BookEntry의 생성자중에서 AudioClip 객체 생성중에 예외를 propagate하면 바로 위 코드중 pb 포인터에 null을 반환해 버린다. 반납된 이렇게 되면 이미 정상적으로 생성된 theImage를 지우지 못하는 사태가 발생해 버리는 것이다.
자 이렇게 해주면 문제 될것이 없다. 자 이상태에 refactoring이 필요한 코드들이 보일것이다 하겠다. delete부분을 함수로 역어 네는 것이다.
이런 const 포인터의 경우에는 반드시 초기화 리스트를 이용하여 인자를 초기화 해주어야 하는 경우이다.
다음 예제는 online 컴퓨터 세션을 위한 Session 클래스를 생각해 본 것이다. 각 세션 객체들은 생성과 파되된 날짜를 기록해야만 한다.
자 이건 괜찮아 보인다. 하지만 저 logDestruction상에서 예외가 발생한다면 어쩌게 할것인가? 해당 소스는 Session의 파괴자 안에서는 예외를 잡지 못한다. 그래서 해당 파괴자를 호출한 자에게 예외를 던진(전달한)다. 그렇지만 다른 에러들이 던져진 상황에서 파괴자가 스스로 자신을 부른거라면 함수의 종료가 자동으로 이루어지기를 원할 것이다. 그리고 당신의 프로그램은 이쯤에서 머추어 버릴 것이다. -해석이 이상하군, 암튼 다른 예외 처리시에 세션 파괴자 로그시 예외가 발생한다면 프로그램이 멈춘다는 소리다.
* Item 12: 가상 함수 부르기나, 인자 전달로 처리와 예외전달의 방법의 차이점을 이해하라.
다음의 가상함수의 선언과 같이 당신은 catch 구문에서도 비슷하게 인자들을 넣을수 있다.
그래서 아마 함수호출에서 인자 전달과 과 예외가 전달되는 것이 기본적으로 같은것이라고 생각 할지도 모른다. 분명 둘은 비슷한 면이 있다. 하지만 중요한 차이점 역시 존재 한다.
자, 비슷한 면은 언급해보면, 함수 예외 모두 에 인자를 전달할때 세가지로 전달할수 있다. 값(by value)이냐 참조(by reference)냐, 혹은 포인터(by pointer)냐 바로 이것이다. 하지만 이 함수와 예외에서의 인자의 전달 방식은 구동 방법에서 결정적인 차이점을 보인다. 이런 차이점은 당신이 함수를 호출할때 최종적으로 반환되는 값(returns)이 해당 함수를 부르는 위치로 가지만, 예외의 경우에 throw의 위치와 return의 위치가 다르다는 점에서 기인한다.
다음 함수에서 Widget의 인자 전달과 예외에서의 전달을 생각해 보자.
해당 사본은 구지 복사할 필요가 없을 것이다. 하지만 catch 는 복사해 나가고 그래야만 catch 에서 localWidget의 사본을 편집해서 이용할수 있다. 이러한 복사의 규칙은 함수 전달과 예외 인자 전달의 차이점을 설명해 준다.
객체가 예외를 위하여 복사가 될때 복사는 해당 객체의 복사생성자(copy constructor)에 의하여 수행 된다. 이 복사생성자는 객체의 dynamic형이 아닌 static 형에 해당하는 클래스중 하나이다. 개념의 확인을 위해 위 소스의 수정 버전을 생각해 보자
전달된 객체는 간단히 참조로 잡을수 있다;그것은 상수 참조로 전달될 필요성은 없다. 그러나 상수 참조가 아닌 전달 임시 객체들은 함수를 부르는걸 허용하지 않는다.
우린 아직 포인터 전달에 의한 걸 의논하지 않았다. 하지만 포인터를 이용해 예외를 던지(전달:throw)하는 것은 함수상에서 포인터를 전달(pass)하는 것과는 다른걸 알수 잇을 것이다. 즉, 포인터의 복사본이 이동하는데, 이렇게 되면 pointer를 전달하는 쪽의 영역에서 throw에 의해 튀어 나가면 포인터가 가리키고 있는 객체는 소멸되므로 포인터에 의한 예외 전달(던지는것:throw)는 피해야 한다. (전역의 static 객체의 포인터라면 이야기는 달라진다. 뒤에 다룬다.)
- AcceleratedC++/Chapter9 . . . . 79 matches
|| 클래스 타입 || string, vector, istream 등 기본언어를 가지고 구현된 타입 ||
C++은 클래스 타입과 같은 사용자가 정의한 어플리케이션 고유의 타입을 정의할 수 있는 많은 기능은 지원한다.
4.2.1절 Student_info 구조체를 다루는 함수를 작성하고, 이를 한개의 헤더파일로 통합을 하는 것은 일관된 방법을 제공하지 않기 때문에 문제가 발생한다.
본 장에서는 기존의 구조체를 확장하여 함수를 작성하고 이런식의 문제를 해결할 수 있는 방법을 알려준다.
프로그래머는 구조체를 다루기 위해서 구조체의 각 멤버를 다루는 함수를 이용해야한다. (Student_info 를 인자로 갖는 함수는 없기 때문에)
=== 9.2.1 멤버 함수 ===
'''상기의 구조체안에 Student_info 를 다룰 수 있는 멤버함수를 추가한 것'''
std::istream& read(std::istream&); //입력 스트림으로 부터 입력을 받아서 4개의 멤버변수를 초기화한다.
double grade() const; //내부 멤버변수를 활용하여 점수를 계산하고 double 형으로 리턴한다.
//함수 명의 뒤에 const를 붙이면 멤버 변수의 변형을 할 수 없는 함수가 된다. (구조적으로 좋다)
* s:Student_info 라면 멤버함수를 호출하기 위해서는 s.read(cin), s.grade() 와 같이 함수를 사용하면서 그 함수가 속해있는 객체를 지정해야함. 암묵적으로 특정객체가 그 함수의 인자로 전달되어 그 객체의 데이터로 접근이 가능하게 된다.
이 함수에서 알아야할 3가지
* 함수의 이름이 Student_info::read이다
* Student_info의 멤버함수이므로 Student_info 객체를 정의할 필요도 인자로 넘길 필요도 없다.
::를 사용함으로써 호출되는 grade를 객체의 멤버함수가 아니라 전역 grade의 형으로 사용하는 것이 가능하다.
객체에서는 const 객체 내부의 데이터들을 const형으로 다룰 수는 없지만, 멤버함수를 const 멤버함수로 만듦으로써 변형에 제한을 줄 수 있다.
* const 객체에 대해서는 const 멤버함수가 아닌 함수는 호출 할 수 없다.
=== 9.2.2 비멤버 함수들 ===
이전에 사용되었던 compare와 같은 함수를 어떤식으로 정의해야 할 것인가?
compare함수는 동일한 형의 2개의 Student_info를 받아서 서로를 비교하는 역할을 한다. 이런함수를 처리하는 일반적인 방법이 있는데, 9.5, 11.2.4, 11.3.2, 12.5, 13.2.1 에서 배우게됨.
- JavaStudy2003/두번째과제/노수민 . . . . 75 matches
Run쪽 옵션이 틀린건가;; 오류가 아니라 메인 클래스가 없다는 등의 다양한 메시지가 뜨면서 안돼요; 결국 간단한 소스를 올립니다
* 클래스 : 특정한 종류의 모든 객체들에 적용할 수 있는 변수와 메소드를 정의하는 '소프트웨어적인 설계도' 이다.
* 인스턴스 : 클래스에 대한 변수를 선언하는 것을 '인스턴스를 생성한다'고 하고, 이 변수를 인스턴스라 한다.
* 객체 : 실세계에 적용 - 자동차(클래스) -> 아반테, 누비라, 그랜저, 티고 등 (객체)
* 상속 : 자동차 클래스에 버스 클래스, 트럭 클래스, 자가용 클래스가 속한다면,
자동차 클래스는 상위 클래스, 버스,트럭,자가용 클래스를 하위클래스라 하며, 이들의 관계에서 "하위클래스는 상위클래스를 상속한다"고 한다.
자바에 메소드(함수) 다중정의, 매소드 재정의가 있다.
=== 클래스 정의 및 인스턴스(객체) 생성 ===
* 클래스 정의
class 클래스이름 {
클래스이름 클래스인스턴스이름 = new 클래스이름();
클래스이름 클래스인스턴스이름;
클래스인스턴스이름 = new 클래스이름();
* public - 같은 클래스, 하위클래스 등 같은 패키지의 모든 클래스에서 접근가능
* private - 같은클래스 내에서만 접근가능
* protected - 같은 클래스, 하위클래스 등 같은 패키지의 모든 클래스에서 접근가능
* 생략 : 같은 클래스 또는 같은 패키지의 모든 클래스에서 접근가능, 하위클래스에서 접근 불가능
* 자바에서는 함수 다중 정의만을 제공함
클래스이름(형식매개변수 리스트) { … }
클래스이름(형식매개변수 리스트) {
- 새싹교실/2012/AClass . . . . 61 matches
* 2주차(5/16) - 함수, 배열 + Search
* 3주차(5/23) - 다차원배열, 포인터 + Search, Sort
* 4주차(5/30) - 구조체, 2중포인터 + Stack, Queue
1. 함수가 무엇인지 쓰고, 예제 프로그램을 하나 만들어 주세요.
1. 함수형이 무엇인지 쓰고, void타입은 왜 return하지 않는지 써주세요.
1. 재귀함수가 무엇인지 써 주세요.
1. 재귀함수를 이용한 프로그램을 하나 짜 보세요.(eg.1~n까지의 합, n!구하기등)
--> 라이브러리에서 우리가 사용하는 함수를 불러오기 위해써주는 것
9.101부터200까지의 모든 정수를 더해서 반환하는 '함수'를 작성해주세요.(main문에는 sum=Sum(); printf("%d",sum);이 있도록해주세요)
10.재귀함수를 이용해 n!을 출력하는 프로그램을 작성해 주세요.
12.재귀함수를 이용해 1부터10까지를 더하는 프로그램을 작성해 주세요.
1. srand()함수가 무엇인지 찾아쓰고, time()을 이용해 랜덤으로 숫자를 하나 출력하는 프로그램을 작성해주세요.
1. 포인터가 무엇인지 쓰고, 포인터를 선언하는 방법을 쓰세요.
1. 배열과 포인터의 공통점과 차이점을 찾아보고, 써보도록 하세요.
* 배열개념, 함수 배웠습니다. 과제 일요일까지 내기, 프린트 해오기. 수정 사항 이었습니다.
* 함수, 재귀함수, 배열.
* 재귀함수 : 자기 자신함수를 다시 불러서 사용하는 함수
* 함수, 배열을 배웠는데 수업시간에 배웠던것 같은데 아직은 헷갈린다
6.포인터를 이용해 함수 swap 짜보기(대부분의 책 예제에 있습니다. 따라 써보고 코드를 이해해 보세요)
9.포인터를 이용한 예제코드 하나를 짜 보세요.
- JavaStudy2003/두번째과제/곽세환 . . . . 49 matches
행동 -> 메소드(함수)
클래스(Class):(벽돌틀)
클래스를 실제로 사용할 수 있도록 선언하는 것
상위클래스가 가지고 있는 특성들을 하위클래스에서 사용할 수 있다.
여러개의 클래스가 같은 메시지에 대해서 각자의 방법으로 작용할 수 있는 능력이다.
연산자 다중 정의(overloading),함수 다중 정의,함수 재정의(overriding)등이 있다.
나.클래스정의 및 인스턴스(객체) 생성
클래스 정의
class 클래스이름 {
클래스이름 클래스인스턴스이름 = new 클래스이름();
클래스이름 클래스인스턴스이름;
클래스인스턴스이름 = new 클래스이름();
public:같은 클래스, 하위클래스, 같은 패키지내에 있는 클래스에서 접근가능
private:같은 클래스에서만 접근가능
protected:같은 클래스, 하위클래스, 같은 패키지내에 있는 클래스에서 접근가능
friendly(생략):같은 클래스, 같은 패키지내에 있는 클래스에서 접근 가능
함수다중정의:같은 이름의 함수가 여러개 존재하는 것
연산자다중정의:같은 이름의 연산자가 클래스에 따라 다른 연산을 수행할 수 있도록 하는 것
클래스이름(형식매개변수 리스트) { … }
클래스이름(형식매개변수 리스트) {
- JavaNetworkProgramming . . . . 45 matches
public class AuthException extends IOException{ //사용자 예외를 정의할때 적당한 예외 클래스의 서브클래스가 되는것이 중요한데
*Thread 클래스 : 보통 상속받아서 사용
*Runnable 인터페이스 : Thread 클래스를 직접 상속받지 않은 클래스의 객체가 손쉽게 쓰레드를 생성할수 있도록 해줌
*ThreadGroup 클래스 : 여래개의 쓰레드르 그룹으로 만들어 손쉽계 Thread를 관리
*OutpuStream,InputStream : 모든 다른 스트림 클래스들의 수퍼클래스이다. 이 Chapter에서는 이둘 클래스 설명
*OutputStream 클래스 : OutputStream 클래스는 통신 채널로의 관문을 의미한다. 즉, OutputStream으로 데이터를 써넣으면 데이터는 연결된 통신 채널로 전송될 것이다.
*InputStream 클래스 : InputStream 클래스는 통신 채널로부터 데이터를 읽어 내는 관문을 의미한다. OutputStream에 의해 통신 채널로 쓰여진 데이터는 해당하는 InputStream에 의해 읽혀진다.
*FileOutputStream과 FileInputStream은 파일에 대한 바이트 기반의 스트림 엑세스를 제공하는 2개의 표준 클래스이다.
*File클래스 : 시스템에 독립적인 파일의 이름을 나타내고 실제 파일에 관한 정보를 결정하는 메소드뿐만아니라, 파일의 속성을 바꾸는 메소드도 제공
*FileDescriptor클래스 : FileDescriptor 객체는 하위 레벨의 시스템 파일 설명자로의 핸들이다. 파일 설명자는 열려진 파일을 의미하며, 읽기 작업이나 쓰기 작업을 위한 현재의 파일 내의 위치와 같은 정보들을 포함한다. RandomAccessFile이나 FileOutputStream, FileInputStream을 사용하지 않고는 유용하게 FileDescritor를 생성할수 있는 방법은 없다 . --;
*RandomAccessFile클래스 : 파일스트림을 사용하지않고 파일을 쉽게 다룰수 있음 장점은 파일스트림 클래스는 순차적 엑세스만이 가능하지만 이것은 임의의 엑세스가 가능하다. 여기선 RandomAccessFile클래스랑 파일 스트림을 같이 쓰는데 RandomAccessFile의 장점을 가지고 네트워크에서도 별다른 수정없이 사용할수있다. 예제는 밑에 --;
*FileOutputStream 클래스 : 연속적인 데이터가 파일에 쓰여질수 있도록 해줌
*FileInputStream 클래스 : 연속적인 데이터를 읽을수 있게 해줌 --;
//않으면 파일을 연다 파일을 열면 포인터는 자동으로 파일의 시작부분을 가리키미로
file.seek(position); //position의 위치로 파일 포인터 위치를 변경
return file.getFilePointer(); //현재 파일 포인터 위치를 돌려줌
*FileterOutputStream , FilterInputStream 클래스 : 이것은 입출력 스트림 필터에 대한 템플리트로 이미 존재하는 InputStream,OutputStream에 연결해서 요구된 내용을 연결된 스트림의 메소드로 전댈해 주는것 이외의 기능은 제공하지 않는다.
*LineNumberInputStream : LineNumberReader 클래스에 의해 쓸모가 없어진 이 스트림은 초보적인 수준으로 줄에 번호 매기는 기능을 제공한다.
*PrintStream : PrintWriter 클래스에 의해 쓸모가 없어진 이 클래스는 ASCII 텍스트 데이터의 출력기능을 제공한다.
*DataOutputStream,DataInputStream,BufferedOutputStream,BufferedInputStream,PrintStream,SequenceInputStream,LineNumberInputStream,PushbackInputStream 클래스에 관해서 좀 자세히 설명을 해놓고 있다.
- 타도코코아CppStudy/객체지향발표 . . . . 35 matches
* Classification(분류) - 같은 자료구조와 행위를 가진 객체들은 동일한 클래스(class)로 분류된다.
상대적으로 각 객체는 소속 클래스의 인스턴스(instance)가 된다.
같은 클래스에서 생성된 객체들은 모두 같은 연산(operation) 기능을 갖고 있으며, 자료구조가 같고 동일한 행위를 하게 된다.(자료구조는 객체들이 갖는 데이타와 속성(attribute)들의 집합이다. 그러나 데이터와 속성의 값은 물론 다르다.)
* Polymorphism(다형성) - 같은 연산 기능이 부여되어도 그 기능을 수행하는 클래스에 따라 다른 행위로 나타날 수 있다.
예를 들어 '이동(move)' 이라는 기능이 '교수'라는 클래스에 적용될 때는 자택의 이사가 될 수 있으나, '승용차'라는 클래스에 적용되면 특정 목적지로 일정한 시각에 정해진 속도로 움직이는 행위가 될 수도 있다.
* Inheritance(상속) - 계층(hierarchy)관계에 놓여 있는 클래스들 간에 속성이나 연산 기능들을 공유한다.
즉, 주어진 클래스에 서브클래스(subclass)가 있다면 서브클래스의 모든 객체들은 소속 클래스의 모든 속성이나 연산기능을 상속받게 된다. 따라서, 서브클래스를 정의할 때에는 수퍼클래스(super class) 로부터 상속받는 내역들을 중복하여 정의할 필요가 없게 된다.
|| 함수로 이루어짐 || 클래스로 이루어짐 ||
* 캡슐화(encapsulation) : 객체의 내부적인 사항과 객체들간의 외부적인 사항들을 분리시킨다. 이렇게 캡슐화된 객체의 행위는 외부에서 볼 때는 구체적인 아닌 추상적인 것이 되므로 정보 은닉(information hiding) 개념이 존중된다. 주어진 클래스의 특정 연산 기능은 메소드(method)라고 한다. 캡슐화는 무슨 메소드로 구현되었는가에 구애받지 않고 추상적으로 정의된 연산 기능을 통해 객체가 사용되고 시스템의 상태(state)를 변화시키도록 해준다.
* sharing : 자료 구조및 행위의 공유화(sharing)는 계층 관계에 놓여 있는 클래스들 간의 상속성(inheritance)으로 가능하다.
서브클래스가 수퍼클래스의 변수와 메소드들을 상속받을 때 필요에 따라 정의가 구체화(specification)되며, 상대적으로 상위층의 클래스 일수록 일반화(generalization) 된다고 말한다.
* 캡슐화(Capsulation) : 캡슐화는 객체의 속에 모든 함수와 그 함수에 의해 유통되는 데이타를 밖에서 유통시키지 않는것이다.
겉에서 그객체를 사용하기 위한 사용자 인터페이스는 제공하나 데이타를 검색, 수정 그리고 함수의 이용을 위해서는 이 인터페이스를 꼭 거쳐야 되게 하는것이다.
즉 함수나 데이터가 그것이 속해있는 객체전용으로 된다는것을 말한다. 좋은 예로 자동차를 들수있다.
자동차라는 객체 클래스를 우리가 사용하기 위해서는 알아야할 것이 운전하는 방법뿐인 것이다. 표지 판이나 교통신호등은 관계는 있으나 자동차를 움직이기 위한 객체 인터페이스와는 아무런 관계가 없는것이다. 캡슐화는 기능의 조직성과 논리성을 연관시킨다.
* 데이타형 클래스와 객체(Class and Objectas any type data) : 자동차를 움직이기 위한 유저가 2명 있다. 자동차라는 객체 를 둘다 사용하는데 한명은 부산에 가려고 하고 한명은 대구에 오려고 한다.
* 상속성(Inheritance) : 객체를 이루는 클래스를 만들때 이전의 정의했던 클래스와 비슷하나 다른 특이한 특성을 지니는 클래스를 만드는것이다.
또 자동차다. 가진 자동차의 엔진이 출력이 150마력이다. 여기다 똑같은 엔진을 하나더 달아 300마력이 되었다. 즉 앞의 150마력이라는 클래스에 두개로서 300마력을 만든다는 개념이 포함 즉 상속되어있는것이다. 엔진력의 향상이 손쉽게 이루어졌다. 만약 새 300마력엔진을 단 차를 산다고 하면 더 힘들것이라는것을 알것이다.
150마력짜리 엔진을 두개 단차와 300마력짜리 엔진을 하나 단 차나 두차의 출력은 같다. 이것이 다형이다. 즉 클래스가 같다는 뜻이다. 조상객체로 볼때는 분명히 같은 이름이지만( 출력이 300마력이다) 전혀 실행방법이 다른 클래스인것이다( 하나는 150마력엔진의 원리로 움직이고 하나는 300마력 엔진의 원리로 움직인다는것).
다형은 기본 클래스를 바탕으로 동일한 메모리 개념을 써 다양성을 부여하는 것이다.
- Gof/Facade . . . . 33 matches
예를 들기 위해, 어플리케이션에게 컴파일러 서브시스템을 제공해주는 프로그래밍 환경이 있다고 하자. 이 서브시스템은 컴파일러를 구현하는 Scanner, Parser, ProgramNode, BytecodeStream, 그리고 ProgramNodeBuilder 클래스를 포함하고 있다. 몇몇 특수화된 어플리케이션은 이러한 클래스들을 직접적으로 접근할 필요가 있을 것이다. 하지만, 대부분의 컴파일러 시스템을 이용하는 클라이언트들은 일반적으로 구문분석(Parsing)이나 코드 변환 (Code generation) 의 세부적인 부분에 대해 신경쓸 필요가 없다.(그들은 단지 약간의 코드를 컴파일하기 원할뿐이지 다른 강력한 기능을 알 필요가 없다.) 그러한 클라이언트들에게는 컴파일러 서브시스템의 강력하지만 저급레벨인 인터페이스는 단지 그들의 작업을 복잡하게 만들 뿐이다.
이러한 클래스들로부터 클라이언트들을 보호할 수 있는 고급레벨의 인터페이스를 제공하기 위해 컴파일러 서브시스템은 facade 로서 Compiler class를 포함한다. 이러한 클래스는 컴파일러의 각 기능성들에 대한 단일한 인터페이스를 정의한다. Compiler class는 facade (원래의 단어 뜻은 건물의 전면. 외관, 겉보기..) 로서 작용한다. Compiler class는 클라이언트들에게 컴파일러 서브시스템에 대한 단일하고 단순한 인터페이스를 제공한다. Compiler class는 컴파일러의 각 기능들을 구현한 클래스들을 완벽하게 은폐시키지 않고, 하나의 클래스에 포함시켜서 붙인다. 컴파일러 facade 는저급레벨의 기능들의 은폐없이 대부분의 프로그래머들에게 편리성을 제공한다.
* 복잡한 서브 시스템에 대해 단순한 인터페이스를 제공하기 원할때. 서브시스템은 종종 시스템들이 발전되어나가면서 더욱 복잡성을 띄게 된다. 대부분의 패턴들은 패턴이 적용된 결과로 많고 작은 클래스들이 되게 한다. 패턴의 적용은 서브시스템들이 더 재사용가능하고 커스터마이즈하기 쉽게 하지만, 커스터마이즈할 필요가 없는 클라이언트들이 사용하기 어렵게 만든다. Facade는 서브시스템에 대한 단순하고 기본적인 시각을 제공한다. 이러한 시각은 대부분의 클라이언트들에게 충분하다. 커스터마이즈가 필요한 클라이언트들에게만이 facade를 넘어서 볼 필요가 있는 것이다.
* 클라이언트들과 추상 클래스들의 구현 사이에는 많은 의존성이 있다. 클라이언트와 서브시스템 사이를 분리시키기 위해 facade를 도입하라. 그러함으로서 서브클래스의 독립성과 Portability를 증진시킨다.
- 각 서브시스템 클래스는 각 요청에 대한 책임이 있다.
3. 그러하면서도 어플리케이션은 여전히 서스시스템 클래스들을 사용할 방법을 제공한다. 사용의 편리성과 일반성을 선택할 수 있다.
클라이언트와 서브시스템간의 연결관계는 Facade를 추상클래스로 만듬으로서 줄일 수 있다.
그러면 클라이언트는 추상 Facade class의 인터페이스를 통해 서브시스템과 대화할 수 있다. 이러한 추상클래스와의 연결은 클라이언트가 사용할 서브시스템의 구현을 알아야 하는 필요성을 없애준다.
2. public vs private 서브시스템 클래스.
서브시스템은 인터페이스를 가진다는 점과 무엇인가를 (클래스는 state와 operation을 캡슐화하는 반면, 서브시스템은 classes를 캡슐화한다.) 캡슐화한다는 점에서 class 와 비슷하다. class 에서 public 과 private interface를 생각하듯이 우리는 서브시스템에서 public 과 private interface 에 대해 생각할 수 있다.
서브시스템으로의 public interface는 모든 클라이언트들이 접속가능한 클래스들로 구성되며. 이때 서브시스템으로의 private interface는 단지 서브시스템의 확장자들을 위한 인터페이스이다. 따라서 facade class는 public interface의 일부이다. 하지만, 유일한 일부인 것은 아니다. 다른 서브시스템 클래스들 역시 대게 public interface이다. 예를 들자면, 컴파일러 서브시스템의 Parser class나 Scanner class들은 public interface의 일부이다.
서브시스템 클래스를 private 로 만드는 것은 유용하지만, 일부의 OOP Language가 지원한다. C++과 Smalltalk 는 전통적으로 class에 대한 namespace를 global하게 가진다. 하지만 최근에 C++ 표준회의에서 namespace가 추가됨으로서 [Str94], public 서브시스템 클래스를 노출시킬 수 있게 되었다.[Str94] (충돌의 여지를 줄였다는 편이 맞을듯..)
Compiler 서브시스템은 BytecodeStream 클래스를 정의한다. 이 클래스는 Bytecode 객체의 스트림부를 구현한다. Bytecode 객체는 머신코드를 구체화하는 bytecode를 캡슐화한다. 서브시스템은 또한 Token 클래스를 정의하는데, Token 객체는 프로그램 언어내의 token들을 캡슐화한다.
Scanner 클래스는 character 스트림을 얻어서 token의 스트림을 만든다.
Parser 클래스는 Scanner의 token로 parse tree를 구축하기 위해 ProgramNodeBuilder 를 사용한다.
Parser는 점진적으로 parse tree를 만들기 위해 ProgramNodeBuilder 를 호출한다. 이 클래스들은 Builder pattern에 따라 상호작용한다.
우리가 토론해온 클래스들은 곧 Compiler 서브시스템을 이룰 것이다. 자 이제 우리는 이 모든 조각들을 함께 묶은 facade 인 Compiler 클래스를 소개할 것이다. Compiler는 소스 컴파일과 특정 machine에 대한 코드변환기능에 대한 단순한 인터페이스를 제공한다.
이 구현에서는 사용하려는 code-generator의 형태에 대해서 hard-codes (직접 특정형태 부분을 추상화시키지 않고 바로 입력)를 했다. 그렇게 함으로서 프로그래머는 목적이 되는 아키텍처로 구체화시키도록 요구받지 않는다. 만일 목적이 되는 아키텍처가 단 하나라면 그것은 아마 이성적인 판단일 것이다. 만일 그러한 경우가 아니라면 우리는 Compiler 의 constructor 에 CodeGenerator 를 인자로 추가하기 원할 것이다. 그러면 프로그래머는 Compiler를 instance화 할때 사용할 generator를 구체화할 수 있다. Compiler facade는 또한 Scanner나 ProgramNodeBuilder 등의 다른 협동하는 서브시스템클래스를 인자화할 수 있다. 그것은 유연성을 증가시키지만, 또한 일반적인 사용형태에 대해 인터페이스의 단순함을 제공하는 Facade pattern의 의의를 떨어뜨린다.
AbstactFactory 는 Facade구현시 서브시스템 독립적인 방법으로 서브시스템 객체를 만들 수 있는 인터페이스를 제공하기 위해 사용한다. Abstract Factory는 또한 플랫폼 비독립적 클래스를 감추기 위해 Facade의 대안으로서 사용할 수 있다.
Mediator 는 존재하는 class들의 기능들을 추상화시킨다는 점에서 Facade와 비슷하다. 하지만 Mediator의 목적은 정해지지 않은 동료클래스간의 통신을 추상화시키고, 해당 동료클래스군 어디에도 포함되지 않는 기능들을 중앙으로 모은다. Mediator의 동료클래스들은 Mediator에 대한 정보를 가지며 서로 직접적으로 통신하는 대신 mediator를 통해 통신한다. 대조적으로 facade는 단지 서브시스템들을 사용하기 편하게 하기 위해서 서브시스템들의 인터페이스를 추상화시킬 뿐이다. facade는 새로운 기능을 새로 정의하지 않으며, 서브시스템 클래스는 facade에 대한 정보를 가질 필요가 없다.
- Gof/Singleton . . . . 27 matches
클래스로 하여금 오직 하나의 인스턴스만을 가지게 하며, 어디서든지 접근 가능하도록 한다.
몇몇 클래스들에 대해서 오직 하나의 인스턴스 만을 가지는 것은 중요한 일이다. 예를 들면, 어떤 시스템에선 수많은 프린터들이 있더라도 거기에는 단 하나의 프린터 스플러만이 있어야 한다. OS에서 돌아가는 화일시스템이나 윈도우 매니저의 경우도 오직 하나여야 한다 (동시에 2-3개의 윈도우매니저가 돌진 않는다.) 디지털 필터의 경우에도 A/D converter는 단 하나를 가진다.
어떻게 우리는 클래스로 하여금 단 하나의 인스턴스만을 가지도록 보장해줄 수 있을까? 그리고 그러한 인스턴스를 쉽게 접근하게 할 수 있을 것인가? global 변수로 둘 경우 어디서든지 접근가능하겠지만, global 변수는 단일 인스턴스만을 가지도록 할 수 없다.
더 좋은 방법은 클래스 자신으로 하여금 자기자신의 단일 인스턴스를 유지하도록 만드는 것이다. 이 클래스는 인스턴스가 생성될 때 요청을 가로챔으로서 단일 인스턴스로 만들어지는 것은 보증한다. 또한, 인스턴스에 접근하는 방법도 제공한다. 이것이 바로 SingletonPattern이다.
* 클래스가 정확히 오직 하나의 인스턴스만이 존재해야 할 때. 그리고 잘 알려진 엑세스 방법으로 어디서든지 접근 할 수 있어야 한다.
* Instance operation (클래스의 메소드)을 정의한다. Instance 는 클라이언트에게 해당 Singleton의 유일한 인스턴스를 접근할 수 있도록 해준다.
1. 클래스에 대한 접근이 오직 하나의 인스턴스에게로 제한된다. Singleton 클래스는 자기 자신의 단일 인스턴스를 캡슐화하기 때문에, 클라이언트가 언제, 어떻게 접근하던지 그 접근이 엄격하게 제어된다.
3. 명령어와 표현을 확장시킬 수 있다. Singleton class는 subclass될 수 있고, 이 확장된 클래스의 인스턴스를 가지고 어플리케이션을 설정하는 것은 쉽다. run-time중에 필요한 경우에도 가능하다.
5. class operation 보다 더 유연하다. 패키지에서 Singleton의 기능을 수행하기위한 또다른 방법은 class operation들을 사용하는 것이다. (C++에서의 static 함수나 Smalltalk에서의 class method 등등) 하지만, 이러한 언어적인 테크닉들은 여러개의 인스턴스를 허용하는 디자인으로 바꾸기 힘들어진다. 게다가 C++에서의 static method는 virtual이 될 수 없으므로, subclass들이 override 할 수 없다.
1. unique instance임을 보증하는 것. SingletonPattern의 경우도 일반 클래스와 마찬가지로 인스턴스를 생성하는 방법은 같다. 하지만 클래스는 늘 단일 인스턴스가 유지되도록 프로그래밍된다. 이를 구현하는 일반적인 방법은 인스턴스를 만드는 operation을 class operations으로 두는 것이다. (static member function이거나 class method) 이 operation은 unique instance를 가지고 있는 변수에 접근하며 이때 이 변수의 값 (인스턴스)를 리턴하기 전에 이 변수가 unique instance로 초기화 되어지는 것을 보장한다. 이러한 접근은 singleton이 처음 사용되어지 전에 만들어지고 초기화됨으로서 보장된다.
다음의 예를 보라. C++ 프로그래머는 Singleton class의 Instance operation을 static member function으로 정의한다. Singleton 또한 static member 변수인 _instance를 정의한다. _instance는 Singleton의 유일한 인스턴스를 가리키는 포인터이다.
클래스를 사용하는 Client는 singleton을 Instance operation을 통해 접근한다. _instance 는 0로 초기화되고, static member function 인 Instance는 단일 인스턴스 _Instance를 리턴한다. 만일 _instance가 0인 경우 unique instance로 초기화시키면서 리턴한다. Instance는 lazy-initalization을 이용한다. (Instance operation이 최초로 호출되어전까지는 리턴할 unique instance는 생성되지 않는다.)
더 나아가, _instance 는 Singleton 객체의 포인터이므로, Instance member function은 이 포인터로 하여금 Singleton 의 subclass를 가리키도록 할 수 있다.
Smalltalk에서 unique instance를 리턴하는 functiond은 Singleton 클래스의 class method로 구현된다. 단일 인스턴스가 만들어지는 것을 보장하기 위해서 new operation을 override한다. The resulting Singleton class might have the following two class methods, where SoleInstance is a class variable that is not used anywhere else:
물론, 코드 어디에선가 클래스를 인스턴스화하지 않으면 생성자는 호출되지 않을 것이다. C++에서는 MySingleton의 static instance를 정의함으로서 이 문제를 잘 해결할 수 있다. 예를 들어, MySingleton 클래스의 구현부를 포함하는 화일에 다음과 같이 정의하면 된다.
미로를 만드는 MazeFactory 클래스를 정의했다고 하자. MazeFactory 는 미로의 각각 다른 부분들을 만드는 interface를 정의한다. subclass들은 더 특별화된 product class들의 instance들을 리턴하기 위한 opeation들을 재정의할 수 있다. 예를 들면 BombedWall 객체는 일반적인 Wall객체를 대신한다.
일단 단순하게, MazeFactory의 subclassing이 필요없다고 가정하자. (잠시 후 subclassing과 관련, 대안적인 방법에 대해 고려해 볼 것이다.) C++ 에서는 static operation인 Instance와 unique instance를 참조하는 static member인 _instance 를 추가함으로서 Singleton 클래스를 구현할 수 있다. 위의 Implementation에서도 언급했듯이 반드시 생성자는 protected로 둠으로서 우발적으로 하나이상의 인스턴스가 생성되는 것을 막는다.
대응되는 클래스의 실제 구현부분은 다음과 같다.
Smalltalk-80[Par90] 의 SingletonPattern의 예는 ChangeSet current라는 코드에 대한 change들 집합들이다. 더 적합한 예제로는 클래스들과 그들의 '''metaclass''' 간의 관계이다. metaclass는 클래스의 클래스로, 각 metaclass는 하나의 인스턴스를 가진다. metaclass들은 이름을 가지지 않지만 (그들의 단일인스턴스를 통한 간접적인 방법을 ㅔㅚ하고), 그들의 단일 인스턴스를 유지하며 일반적으로 다른 클라이언트에 의해 생성되지 않는다.
InterViews user interface toolkit[LCI+92]는 toolkit의 Session과 WidgetKit 클래스의 unique instance에 접근하지 위해 SingletonPattern을 이용한다. Session은 application의 메인 이벤트를 dispatch하는 루프를 정의하고 사용자 스타일관련 데이터베이스를 저장하고, 하나나 그 이상의 물리적 display 에 대한 연결들(connections)을 관리한다. WidgetKit은 user interface widgets의 look and feel을 정의한다. WidgetKit::instance () operation은 Session 에서 정의된 환경변수에 기반하여 특정 WidgetKit 의 subclass를 결정한다. Session의 비슷한 operation은 지원하는 display가 monochrome display인지 color display인지 결정하고 이에 따라서 singleton 인 Session instance를 설정한다.
- 새싹교실/2012/아우토반/앞반/5.10 . . . . 24 matches
1. 함수
* 함수란?
* 함수의 형태
* 함수의 종류
* 함수의 정의
* 함수의 선언, 정의 호출의 의미
2. 포인터
* 포인터와 변수의 개념
* 포인터 연산자
* 포인터의 종류
* 인자를 전달받는 함수
* 포인터를 인자로 받는 함수
* 포인터의 연산
* 포인터의 포인터
* 포인터와 상수(Const)
1. void Swap(int*, int*) 함수를 구현하시오.
처음 printf함수에서 변수 a의 메모리 안에 있는 값을 출력
다음 printf함수에서 변수 a의 메모리의 주소값을 출력
다음 printf함수에서 변수 p의 메모리 안에 있는 값을 출력
네번째 printf함수에서 변수 *p의 값은 0 이고
- 새싹교실/2011/데미안반 . . . . 23 matches
* 나중에 포인터를 사용하는 실습을 하다 보면 많은 깨달음을 얻을 수 있지 않을까 싶습니다...
* 아무래도 성과가 바로바로 눈에 보이게 출력하여 확인할 수 있는 함수이다 보니, 초보자가 바로 이해하기 어려움에도 불구하고 처음에 배우게 되는 듯 합니다.
* 입, 출력 함수 - printf, scanf
#include <stdio.h> //printf 함수 사용
#include <assert.h> //assert 함수 사용
#include <assert.h> //assert 함수 사용
#include <assert.h> //assert 함수 사용
#include <assert.h> //assert 함수 사용
* 기타 대입 연산자 사용 예에서 -= , /= , %= 한 결과를 assert(val1 == 7); 와 같이 assert함수 안에 넣어 확인하시오.
* 함수
* [박성국] - ^오늘은 함수에 대해서 자세히 배우고 그에 필요한 지식인 지역변수 전역변수 static변수에 대해 자세히 배웠습니다.^ 하나하나 배우면서 C언어어에 대한 자신감을 가졌습니다. 특히 Recursive function에 대해 정확한 이해를 통하여 활용할 수 있게 되었습니다. 항상 스펀지같이 쏙쏙 머리속에 들어오는 수업 감사합니다.
* [이준영] - 수업시간에 제대로 집중을 못해서 잘 못들은 부분을 자세히 배울 수 있어서 다행이었습니다. 재귀함수랑 변수의 유형을 자세히 배웠습니다. 앞으로도 더 많은 걸 배우고 싶어요.
* [강소현] - 함수의 형태를 반환형이 있는 지의 여부와 매개변수가 있는 지의 여부에 따른 4 가지를 실습하여 차이를 알아보았습니다. 그리고 재귀함수에 대한 진도도 나갔으나, 아무래도 그냥 함수 한번 호출하고 끝낼 때보다 이해가 잘 가지 않는 듯 합니다. 다음 시간에 한번 더 복습할 예정입니다. 재귀함수로 만드는 factorial이나 gcd 같은 것을 점화식을 설명하고 보여주면 좀 더 이해가 쉽지 않을까 싶었습니다.
* 재귀함수 복습
* [강소현] - 한 시간은 정말 금방 가네요. 근데 왜 학교 수업 들을 때는 그리 길었던거지!? 재귀함수를 사용할 경우 항상! 빠져나올 수 있는 '''조건'''을 걸어야 한다는 것을 복습했습니다. 뭔가 도미노 원칙 어쩌구 하긴 했지만 정확한 게 아니라 비슷하다-고 했던거에요. 정확한 건 3학년 알고리즘 시간에 divide&conquer을 배우면...<< 간단히 설명하자면 한번에 풀기 힘드니까 나눠서 풀자는 내용입니다.
* 함수 호출 시, stack에 돌아올 주소를 넣어두고 함수가 종료되면 stack에서 빼와서 돌아간다. LIFO(Last In First Out)의 순으로..
* Printf함수는 널 문자를 통해서 출력의 범위를 결정 짓는다.
* 포인터
* [강소현] - 이후의 내용은... 배우고 싶은 사람에 한해 방학 때 하기로 했습니다.진도를 너무 느리게 나가면 안되겠구나하고 느낀.. ;ㅅ; 작년에는 3번 수업으로 포인터까지 나갔는데, 올해는.. 대상이 다르기는 하지만, 조절을 잘 못하기도 했네요. ㅠㅠ
- Java Study2003/첫번째과제/장창재 . . . . 22 matches
자바 API는 윈도우 API와 같이 운영체제에서 제공해 주는 라이브러리와 같은 것입니다. 다시 말해서, 자바 프로그램을 개발하기 위해 사용할 수 있는 라이브러리 또는 클래스들이라 할 수 있습니다. 이러한 자바 API는 서로 관련된 클래스들을 묶어서 패키지 단위로 제공되고 있습니다.
자바의 주된 특징은 기존의 C/C++ 언어의 문법을 기본적으로 따르고, C/C++ 언어가 갖는 전처리기, 포인터, 포인터 연산, 다중 상속, 연산자 중첩(overloading) 등 복잡하고 이해하기 난해한 특성들을 제거함으로써 기존의 프로그램 개발자들이 쉽고 간단하게 프로그램을 개발할 수 있도록 합니다.
자바는 컴파일 시에 에러 검사를 철저하게 하고, 실행 시에 발생할 수 있는 에러에 대해서도 실행 시에 철저하게 검사를 수행함으로써 신뢰도가 높은 프로그램을 작성할 수 있도록 해 줍니다. 또한, C/C++ 프로그램 개발자들을 가장 혼란스럽게 하고, 프로그램의 치명적인 오류를 발생시킬 수 있는 포인터 및 포인터 연산을 자바에서는 사용하지 않게 함으로써, 포인터를 사용함으로써 프로그래머가 범할 수 있는 오류를 없앴다는 것입니다.
자바의 다중 스레드 기능은 동시에 많은 스레드를 실행시킬 수 있는 프로그램을 만들 수 있도록 해 줍니다. 자바는 동기화 메소드들을 기본적으로 키워드로 제공함으로써, 자바 언어 수준에서 다중 스레드를 지원해 줍니다. 자바 API에는 스레드를 지원해 주기 위한 Thread 클래스가 있으며, 자바 런타임 시스템에서는 모니터와 조건 잠금 함수를 제공해 줍니다.
C와 같이 다른 언어로 작성된 함수를 직접 호출합니다.
느린(lazy) 클래스 로딩:
하나의 HTML 페이지 내에 있는 애플릿은 하나의 클래스만을 사용할 경우도 있겠지만, 대부분의 경우 여러 개의 클래스를 필요에 따라 사용하게 됩니다. 여러 개의 클래스를 사용할 경우, 모든 클래스가 동시에 사용되지는 않겠지요. 또한 어떤 클래스는 정의는 되어있지만, 필요에 따라 전혀 사용되지 않을 수도 있겠지요. 따라서, 자바에서는 필요할 경우에만 클래스를 로딩하여 사용하게 됩니다. 이러한 기술을 느린(lazy) 클래스 로딩 이라 합니다.
이러한 문제점은 느린(Lazy) 클래스 로딩에서 발생하거나 메모리 할당과 가비지 콜렉션이 비결정적이고 느린 최악의 경우(worst-case) 특성을 가지며 stop-start 방식으로 모든 스레드를 멈출 수 있다는 문제점이 있습니다. 이를 해결하기 위해 클래스를 미리 로딩(class preloading)한다거나 정적 초기화(static initializer)를 제거하여 패키지 라이브러리에 대해서는 가상머신 초기화를 사용하고 응용프로그램에서는 명시적인 초기화 를 사용하게 하는 등의 기법을 사용할 수 있습니다. 그리고, 메모리 할당과 쓰레기 수집(garbage collection)에 대해서는 정해진 시간 내에 입터럽트 가능한 쓰레기 수집을 하는 것입니다. 또는 표준화된 실시간 API를 제공함으로써 해결할 수 있습니다.
C언어를 이용하여 C 프로그램을 작성한다면 반드시 main이라는 시작 함수를 정의해 주어야 하고, 윈도우 응용프로그램을 작성한다고 하면 WinMain이라는 함수를 꼭 작성해 주어야 하지요. 이러한 것을 규약(protocol)이라 합니다. 마찬가지로, 자바 언어를 이용하여 여러 가지 종류의 자바 프로그램을 작성할 수 있는데, 이 때 각 자바 프로그램의 종류에 따라 해당 규약이 서로 다릅니다. 이렇듯 자바를 이용하여 자바 프로그램을 작성한다는 것은 각 자바 프로그램에서 제시하고 있는 규약을 지켜 프로그램을 작성한다는 것입니다. 자바 언어를 이용하여 작성할 수 있는 자바 프로그램의 종류를 살펴보면 다음과 같습니다.
- DPSCChapter3 . . . . 21 matches
연관된 혹은 의존적인 객체들의 집합을 만들기 위한 인터페이스를 제공한다. 클라이언트가 구체적인 클래스들에 대한 구체화
Ford parts,Toyota parts,Porsche parts 등등이다. 유사한 클래스들이 클래스 구조를 통해서 확장된다. 각각이 적당한 하위
된 여러 종류의 클래스들 중 하나를 선택할 수 있도록 해주는 것을 의미한다.
우리는 아래와 같은 자동차와 자동차 부분들의 클래스를 가지고 있다.
Vechile과 CarPart는 Object 클래스의 서브 클래스이다. 물론, 이 클래스 구조는 많은 단계에서 전체적으로 단순화된다.
우리는 CarPartFactory라는 추상 팩토리 클래스 정의를 하면서 패턴 구현을 시작한다. 이것은 "구체적인 클래스들에 대한
클래스이다. 그것은 추상적인 상품 생성 함수들(makeCar,makeEngine,makeBody)을 정의한다. 그 때 우리는 상품 집합 당
하나의 구체적인 팩토리 하위 클래스를 정의한다. 각각의 하위 클래스들은 적당한 부분을 만들고 반환하기 위해서 상품 생성
함수를 재 정의한다. 그래서 우리는 Object를 상속한 새로운 하위 구조를 추가한다.
자동차 부분(part) 생성 메쏘드를 구현하기 위해서, 우리는 추상 팩토리 클래스로 시작한다.
그리고 이 메쏘드를 오버라이드하는 구체적인 하위 클래스를 추가한다.
아직, 확실하지 않는 한 부분이 있다. CarAssembler는(factory 클라이언트) 어떻게 구체적인 CarPartFactory 하위 클래스의 인스턴스를 얻을 수 있을까? 그것은 특별한 하위 클래스 자체를 소비자의 선택에 기초해서 인스턴스화 할 수 있을 것이다. 혹은 외부 객체에 의해서 팩토리 인스턴스를 다룰수도 있을 것이다.
하지만, 두 경우에 자동차를 생성하기 위한 코드와 그것의 컴포넌트 하위 부분은 여전히 같다. 즉, 모든 CarPartFactory 클래스들은 동일한 메시지 프로토콜을(다형성)을 구현하기 때문에, 팩토리 클라이언트는 팩토리 타입이 무엇인지 상관하지 않고 호출을 할 수 있다. 그것은 단지 팩토리 프로토콜에 의해 제공되는 일반적인 메시지를 전송한다.
ABSTRACT FACTORY 접근은 좀더 모듈적이고, 좀더 쉽게 확장 가능한 디자인을 할 수 있다. 시스템에 새로운 타입의 자동차를 추가하기 위해서, 우리는 CarPartFactory의 서브 클래스를
- Gof/Mediator . . . . 20 matches
다른 다이얼로그 박스들은 도구들 사이에서 다른 dependency들을 지닐 것이다. 그래서 심지어 다이얼로그들이 똑같은 종류의 도구들을 지닌다 하더라도, 단순히 이전의 도구 클래스들을 재사용 할 수는 없다. dialog-specific dependency들을 반영하기 위해서 customize되어져야 한다. subclassing에 의해서 개별적으로 도구들을 Customize하는 것은 지루할 것이다. 왜냐하면 많은 클래스들이 그렇게 되어야 하기 때문이다.
director가 리스트 박스와 입력 필드 사이의 조정하는 방법을 요약하자. 도구들은 서로 단지 간접적으로 director을 통해서 통신한다. 그들은 서로에 대해서 몰라야 하며, 그들 모두는 director를 알아야 한다. 게다가 행위는 한 클래스에 지역화 되어지기 때문에 행위는 클래스를 확장하거나 교체함으로써 변하거나 바꿔질 수 있다.
FontDialogDirector 추상화가 클래스 library를 통하하는 방법은 다음과 같다.
DialogDirect는 다이얼로그의 전체 행위를 정의한 추상 클래스이다. client들은 화면에 다이얼로그를 나타내기 위해서 ShowDialog 연산자를 호출한다. CreateWidgets는 다이얼로그 도구들을 만들기 위한 추상 연산자이다. WidgetChanged는 또 다른 추상 연산자이며, 도구들은 director에게 그들이 변했다는 것을 알려주기 위해서 이를 호출한다. DialogDirector subclass들은 CreateWidgets을 적절한 도구들을 만들기 위해서 override하고 그리고 그들은 WidgetChanged를 변화를 다루기 위해서 override한다.
* 몇몇의 클래스들 사이에 분산되어진 하나의 행위가 많은 subclassing하는 작업 없이 customize되어져야 할 때.
1. MediatorPattern은 subclassing을 제한한다. mediator는 다시말해 몇몇개의 객체들 사이에 분산되어질 행위를 집중한다. 이런 행위를 바꾸는 것은 단지 Mediator를 subclassing하기만 하면 된다. Colleague 클래스들은 재사용되어질 수 있다.
1. 추상 Mediator 클래스 생략하기. 추상 Mediator 클래스를 선언할 필요가 없는 경우는 colleague들이 단지 하나의 mediator와만 작업을 할 때이다. Mediator클래스가 제공하는 추상적인 coupling은 colleague들이 다른 mediator subclass들과 작동학게 해주며 반대의 경우도 그렇다.
우리는 DialogDirector를 Motivation에서 보았던 것처럼 font dialog를 구현하기 위해서 사용할 것이다. 추상 클래스 DialogDirector는 director들을 위한 interface를 정의 하고 있다.
Widget 은 widgets들을 위한 추상 기초 클래스이다. 하나의 widget은 자신의 director를 알고 있다.
FontDialogDirector 클래스는 다이얼로그 박스의 widgets사이에 중간이 위치한다. FontDialogDirector는 DialogDirector의 하위 클래스이다.
기본적으로 FacadePattern은 클래스 집단이 있고, 그 클래스 집단을 사용하는 외부 클래스의 입장에서 필요한 패턴이고, MediatorPattern은 클래스 집단이 있고, 그 클래스 집단 내부에서 서로를 사용하기 위한 패턴이다.
- ProgrammingWithInterface . . . . 20 matches
언제나 개발을 할 때 '어라~ 같은 일 하는데? 이거 Base 클래스 만들어서 위로 올려야 겠는데?' 일말의 틈도 주지 않고 실행한다. 다형성을 사용하는 코드를 생성한다. '와우~! 한결 깔끔해 졌는걸?' 하지만 오산이었다. 시간이 지나서 먼가 추가할 동작들이 생겼다. 이제 고치기 시작한다. Base 클래스 부터... 고치고 나니 컴파일이 되지 않는다. 코드 수정의 여파가 하위 클래스들에게 까지 미친다. 정말 미친다. 이런 상속을 통한 계층 구조는 상위 클래스와 하위 클래스의 결합도를 높여준다. 지나 치게 크게..! 동감하지 않는가? 하나를 고쳤는데 수정할 꺼리가 마구 쏟아지는 상황을...
상속을 사용하는 상황을 국한 시켜야 할 것같다. 상위 클래스의 기능을 100%로 사용하면서 추가적인 기능을 필요로 하는 객체가 필요할 때! .. 이런 상황일 때는 상속을 사용해도 후풍이 두렵지 않을 것 같다. GoF의 책이나 다른 DP의 책들은 항상 말한다. 상속 보다는 인터페이스를 통해 다형성을 사용하라고... 그 이유를 이제야 알 것같다. 동감하지 않는가? Base 클래스를 수정할 때마다 하위 클래스를 수정해야 하는 상황이 발생한다면 그건 인터페이스를 통해 다형성을 지원하는게 더 낫다는 신호이다. 객체는 언제나 [[SOLID|SRP (Single Responsiblity Principle)]]을 지켜야 한다고 생각한다.
자 모든 값을 clear 를 사용해 삭제했는데 topOfStack의 값은 여전히 3일 것이다. 자 상속을 통한 문제를 하나 알게 되었다. 상속을 사용하면 원치 않는 상위 클래스의 메소드까지 상속할 수 있다 는 것이다.
상위 클래스가 가지는 메소드가 적다면 모두 [오버라이딩]하는 방법이 있지만 만약 귀찮을 정도로 많은 메소드가 있다면 오랜 시간이 걸릴 것이다. 그리고 만약 상위 클래스가 수정된다면 다시 그 여파가 하위 클래스에게 전달된다. 또 다른 방법으로 함수를 오버라이딩하여 예외를 던지도록 만들어 원치않는 호출을 막을 수 있지다. 하지만 이는 컴파일 타임 에러를 런타임 에러로 바꾸는 것이다. 그리고 LSP (Liskov Sustitution Principle : "기반 클래스는 파생클래스로 대체 가능해야 한다") 원칙을 어기게 된다. 당연히 ArrayList를 상속받은 Stack은 clear 메소드를 사용할 수 있어야 한다. 그런데 예외를 던지다니 말이 되는가?
자.. Stack과 ArrayList간의 결합도가 많이 낮아 졌다. 구현하지 않은 clear 따위 호출 되지도 않는다. 왠지 합성을 사용하는 방법이 더 나은 것 같다. 이런 말도 있다. 상속 보다는 합성을 사용하라고... 자 다시 본론으로 들어와 저 Stack을 상속하는 클래스를 만들어 보자. MonitorableStack은 Stack의 최소, 최대 크기를 기억하는 Stack이다.
깔끔한 코드가 나왔다. 하지만 MonitorableStack은 pushMany 함수를 상속한다. MonitorableStack을 사용해 pushMany 함수를 호출하면 MonitorableStack의 입력 받은 articles의 articles.length 만큼 push가 호출된다. 하지만 지금 호출된 push 메소드는 MonitorableStack의 것이라는 점! 매번 size() 함수를 호출해 최대 크기를 갱신한다. 속도가 느려질 수도 있다. 그리고 만약 누군가 Stack의 코드를 보고 pushMany 함수의 비 효율성 때문에 Stack을 밑의 코드와 같이 수정했다면 어떻게 될 것인가???
- Ruby/2011년스터디/세미나 . . . . 20 matches
*함수조차 nilClass의 멤버함수
* nilClass의 인스턴스는 nil하나, prototype은 없음. 다른 함수들은 가지고있음
* 멤버변수도 객체, 객체안의 객체!
* 루비에서는 클래스명이 대문자로 시작해야한다!(아니면 에러)
* initialize 함수로 객체 선언하기
* 멤버변수 선언하기(@)
* 이미 생성된 인스턴스에 멤버함수 추가하기
* 함수의 오버라이딩
* 부모 클래스를 동적 변경하면, 자식 클래스의 인스턴스는 어떻게 될까?
* 루비의 클래스/메소드 체이닝을 가르칠까요?
* 루비의 함수는 () 생략가능!
* 블럭을 이용한 반복자 함수
* 아.. 세미나가 끝나니까 할말이 생각나네요..ㅠㅠ 루비의 블록 넘기기는 사실 블록이 yield구문에게 전달되는 것이 아니라 yield를 만나면 함수의 호출부로 컨트롤이 이동해 블록이 있는지 확인하고 실행합니다. 책에서는 co-routine 이라고 이해하면 된다는 설명이 있어요~ 블록이 전달되는게 아니라 컨트롤 플로우가 왔다갔다!! 스위치 태스킹처럼요. 세미나때 설명을 잘 해드렸어야 했는데 죄송천만번입니다 - [서지혜]
* ''의도가 명확하다는 것''이 무엇인지 설명하는 것보다 의도가 명확하지 않은 상황을 제시하는 게 이해하기 좋을 것 같으니 하나 예를 들어볼게. RubyLanguage에서 괄호를 쓰지 않아도 되는 것은 if 구문에 대해서만 그런 것은 아니야. 함수의 경우도 마찬가지지. 만약 내가 매개변수 a와 b를 받아 그 둘을 더해 반환해주는 함수 add(a, b)를 만들었다 치자. 이 메서드를 다음과 같이 이용할 수 있겠지.
* 스스로 찾아보시다니 좋은 자세이십니다. { |x| ~~ } 블록구문은 처음엔 잘 이해가 가지 않지만(지금도) 함수의 구현마저 동적인 루비의 장점이 잘 나타나 있는 부분이라 생각됩니다. - [서지혜]
- 새싹교실/2012/세싹 . . . . 19 matches
- 즉, 소켓 프로그래밍도 해당 함수와 하위 함수들의 작동원리를 잘 모르더라도 어떤 기능을 하는지만 알면 쉽게 통신 프로그래밍을 할 수 있습니다.
* 오피에서 숙제를 했습니다. VS로 하려니까 뭔가 막 오류가 나는데 고치지는 못하겠고 그래서 우분투를 깔아서 시도를 했네요. 용어가 익숙하지 않아서 그런지 함수 설명을 봐도 한번에 와닿지 않아서 힘들었습니다. 아 그리고 숙제를 하다가 생긴 문제인데요. 서버 프로그램을 처음 실행했을 때는 괜찮은데 두 번째로 실행했을 때는 Bind에러가 나네요. 그래서 매번 실행할 때마다 포트값을 수정해야했습니다. 왜 이런 문제가 생긴걸까요? - [권영기]
* 자세한 해결 방법입니다. 소켓을 생성하고나서 바로 setsockopt(mySocket, SOL_SOCKET, SO_REUSEADDR, &anyIntegerVariableThatContainsNonZero, sizeof(anyIntegerVariableThatContainsNonZero)); 함수를 호출하면 이 소켓의 생명이 다하는 순간 해당 포트에 자리가 나게 됩니다. - [황현]
* 데이터 처리에 대하여 좀 더 검색하였는데 기본적으로 send된 정보는 버퍼에 계속 쌓이며, recv가 큐처럼 버퍼를 지우면서 읽는다고 되어있었습니다. 반면 read와 같은 파일포인터 함수로 읽으면 버퍼를 지우지않고 파일포인터만 이동하는 것 같더군요. recv도 옵션을 변경하면 버퍼에 계속 누적해서 보관할 수 있는거 같습니다.
* 스레드 실행 시점이 그때그때 달라서 값이 변하는 변수의 포인터를 인자로 주면 안되는군요. 그것 때문에 고생했습니다. - [김희성]
* 채팅 코드를 보기 좋게 수정해봅시다. 힌트 - cpp 분할, 함수화
* CreateFile함수를 처음 사용하여보았습니다. - [김희성]
* fopen의 경우 Standard함수인데 같은 input일 때, 리눅스에서 다르게 작동할지 궁금합니다. - [김희성]
ReadFile은 파일포인터를 읽은 만큼 옮기던데 ReadSector에서는 옮긴 지점부터 섹터 단위로 세어서 읽는 건가요? 아니면 처음부터 다시 세어 읽는건가요? - [김희성]
* 함수를 반복해서 실행해 보았는데 읽는 위치가 같은 걸 보아, 파일 처음 부분부터 단위를 세는 것이군요. - [김희성]
* CreateFile함수 사용시 문자열이 LPCWSTR로 변환되지 않는 문제가 생기는 경우에는 CreateFileA를 사용해보세요.
i=((int)(*((unsigned char*)MFT+21))<<8)+*((unsigned char*)MFT+20);//Offset으로 포인터 이동
* 뒤집어 읽는 함수는 없고, 리틀엔디언을 빅엔디언으로 변환하는 함수는 있군요.
point=((int)(*((unsigned char*)MFT+21))<<8)+*((unsigned char*)MFT+20);//Offset으로 포인터 이동
클래스화 중, 읽을 수 있는 속성을 늘리는 중. (현재 기본 정보, 파일 이름, data 영역 읽기 가능)
- 새싹교실/2011/Noname . . . . 18 matches
* 키보드로부터의 입력받기 : scanf함수
* 함수 #define함수와 일반함수
* 일반함수
자료형 함수명(배개변수){
함수몸체
* #define함수
* 연산자의 종류들과 #define함수의 활용법에 대해서 배웠습니다. 아직 C프로그래밍이 익숙지 않아서 간단한 함수도 어렵게 느껴졌다. 여러 예재로 우선 C프로그래밍에 익숙해 져야 겠다. 수업이 끝난 후 복습을 꼭 해야겠다. - [김창욱]
* 함수만들기
* 재귀함수의 사용
* Factorial 함수만들기
* 피보나치 수열 함수만들기
* 하노이탑 함수 만들기
* 재귀함수의 사용법을 익숙하게 하기 위하여 여러가지 예제를 풀어보았습니다. 처음 두가지 예제는 비슷해서 그런지 금방 끝냈는데 하노이탑은 힘들어 하더라구요. 저도 작년에 이 문제를 풀기위해 온갖 노력을 하다가 그때 선생님의 도움으로 간신히 풀었는데 그 기분이 짱이더라구요. 하노이탑까지는 꼭 풀고 다음을 배워야겠습니다. - [박정근]
* 배열만을 공부하려니까 자꾸 포인터쪽으로 연결되네요ㅠㅠ 포인터는 나중에 따로하려고 했는데 배열을 하면서 같이 공부해야겠습니다. - [박정근]
- Chapter I - Sample Code . . . . 17 matches
OS에서 공유자원이나 특정코드가 수행되는 도중에 다른 프로세스에 의해 interrupt 되는것을 방지하기 위해 크리티컬 섹션을 사용하게 된다. 이는 윈도우즈 프로그래밍에서 스레드관련 처리를 해 줄 때에도 나오는 용어이다. uCOS-II에서는 단순히 매크로함수를 이용해 크리티컬섹션에 들어오기와 나오기를 한다. 매크로함수가 하는 일은 단순히 인터럽트를 무효화, 유효화 시키는것 뿐이다.
수행시간 측정은 한 task 의 수행시간을 측정하기 위해서 한다. (당연한거 아냐?). 이 측정은 PC의 82C52 타이머 2번을 통해 수행된다. 수행시간 측정을 위한 함수로는 PC_ElapsedStart()와 PC_ElapsedStop()이 있다. 하지만 이 두 함수를 사용하기 전에 PC_ElapsedInit()를 호출해야한다. 이 함수는 두 함수와 관련된 오버헤드를 측정하는데 사용된다. 이렇게 하면 PC_ElapsedStop 함수에 의해 수행시간이 리턴된다(마이크로세컨드). 이 두 함수는 모두 리엔터런트(주 : 몇 개의 프로그램이 동시에 하나의 task나 subroutine을 공유하여 쓰는 것에 대해 말함, from 한컴사전) 하지 않아야한다. 다음은 PC_DispChar()함수의 측정시간을 구하는 예이다.
uCOS-II는 여타의 DOS Application 과 비슷하다. 다른말로는 uCOS-II의 코드는 main 함수에서부터 시작한다. uCOS-II는 멀티태스킹과 각 task 마다 고유의 스택을 할당하기 때문에, uCOS-II를 구동시키려면 이전 DOS의 상태를 저장시켜야하고, uCOS-II의 구동이 종료되면서 저장된 상태를 불러와 DOS수행을 계속하여야 한다. 도스의 상태를 저장하는 함수는 PC_DosSaveReturn()이고 저장된 DOS의 상태를 불러오는것은 PC_DOSReturn() 함수이다. PC.C 파일에는 ANSI C 함수인 setjmp()함수와 longjmp()함수를 서로 연관시켜서 도스의 상태를 저장시키고, 불러온다. 이 함수는 Borland C++ 컴파일러 라이브러리를 비롯한 여타의 컴파일러 라이브러리에서 제공한다.[[BR]]
'''uCOS-II를 끝내기 전에 PC_DOSSaveReturn 함수를 호출해야한다. 그렇지 않으면 DOS가 curruped mode 가 되어버리고 이것은 당신의 windows에 영향을 줄 수도 있다.'''
- STL/vector/CookBook . . . . 16 matches
* typedef으로 시작하는 부분부터 보자. 일단 반복자라는 개념을 알아야 되는데, 사실은 나도 잘 모른다.--; 처음 배울땐 그냥 일종의 포인터라는 개념으로 보면 된다. vector<int>::iterator 하면 int형 vector에 저장되어 있는 값을 순회하기 위한 반복자이다. 비슷하게 vector<Object>>::iterator 하면 Object형 vector에 저장되어 있는 값을 순회하기 위한 반복자겠지 뭐--; 간단하게 줄여쓸라고 typedef해주는 것이다. 하기 싫으면 안해줘도 된다.--;
* for 부분을 보면 앞에서 typedef 해준 VIIT 형으로 순회하고 있는것을 볼수 있다. vector<T>의 멤버에는 열라 많은 멤버함수가 있다. 그중에 begin() 은 맨 처음 위치를 가르키는 반복자를 리턴해준다. 당연히 end()는 맨 끝 위치를 가르키는 반복자를 리턴해주는 거라고 생각하겠지만 아니다.--; 정확하게는 '맨 끝위치를 가르키는 부분에서 한 칸 더간 반복자를 리턴'해주는 거다. 왜 그렇게 만들었는지는 나한테 묻지 말라. 아까 반복자는 포인터라고 생각하라 했다. 역시 그 포인터가 가르키는 값을 보려면 당연히 앞에 * 을 붙여야겠지.
* 우리가 여태까지 배운 거만 써보면 이렇게 고칠수 있다. 그 유명-_-한 동적배열이다.--; 아.. delete [] 저거 보기 싫지 않은가? c와 c++의 고질적인 문제점이 바로 저거다. 메모리 관리를 프로그래머가 해줘야 한다는거.. 자바 같은건 지가 알아서 delete 해주지만.. c나 c++에서 delete 안해주면.. X되는 꼴을 볼수 있다. (본인이 한번 경험해 봤다.) 그래서 잘 디자인된 클래스는 클래스 내에서 알아서 없애줘야 한다. 바로 vector를 쓰면 저 짓을 안해줘도 된다. 또 고쳐보자.
* 그래서 pointer만을 이용해서 저장하자. 하지만 쓸모 없는 객체는 우리가 지워줘야 한다. 포인터를 넣어줄때에는, 컨테이너가 소멸될때는 포인터들은 지워지겠지만. 그 포인터들이 가르키는 값들은 지워지지 않기 때문이다.
vector<Obj*> v; // 포인터를 저장하는 vector
// 벡터에 Obj객체들의 포인터를 넣는다.
* 노파심에서 말하는 건데.. 함수로 객체를 넘길때는 꼭 참조! 참조! 입니다. 값이 안 바뀌면 꼭 const 써주시구여. 참조 안 쓰고 값 쓰면 어떻게 되는지 이펙티브 C++에 잘 나와 있습니다.(책 선전 절대 아님) 복사 생성자를 10번 넘게 호출한다는 걸로 기억함.
* 구조체에서 함수역시 가능하고, constructor, destructor역시 가능합니다. 다만 class와 차이점은 상속이 안되고, 내부 필드들이 public으로 되어 있습니다. 상속이 안되서 파생하는 분제들에 관해서는 학교 C++교제 상속 부분과 virtual 함수 관련 부분의 동적 바인딩 부분을 참고 하시기 바람니다.--["상민"]
- TermProject/재니 . . . . 15 matches
if (select == 1) menu1(); // 각 선택에 맞게 함수를 호출
else error(); // 잘못 입력하였을 경우 에러메시지를 출력하는 함수 호출
if (select >= 1 && select <= 3) // 서브메뉴의 선택에 따라 화면에 출력하는 함수를 호출
sort(i, j); // 정렬 함수를 호출함
prt_select(); // 선택된 서브메뉴에 따라 출력하는 함수를 호출
avr(); // 평균 산출 함수를 호출
avr(); // 평균 산출 함수를 호출
for (int j = 0 ; j < i ; j++) // 정렬 함수를 호출하여 정렬함
void sub_menu() // 1, 2번 메뉴의 경우 서브 메뉴를 입력받아 선택된 메뉴를 출력하는 함수
error(); // 잘못 입력하였을 경우 에러메시지를 출력하는 함수 호출
void avr() // 평균을 산출하는 함수
void prt_all() // 3, 4번 메뉴를 선택했을 경우 공동으로 사용하는 출력 함수
grade(i); // 학점을 산출하는 함수 포출
void grade(int i) // 학점을 산출하는 함수
void error() // 메뉴를 잘못 입력하였을 경우 에러 메시지를 출력하는 함수
- HardcoreCppStudy/첫숙제/Overloading/변준원 . . . . 14 matches
C++의 새로운 특징 중 하나인 디폴트 전달인자를 살펴보자. 디폴트 전달인자는 함수의 호출에서 대응되는 실제 매개변수를 빠뜨렸을 때 자동적으로 사용되는 값이다.
전달인자 리스트를 가지고 함수를 사용할 때에는 디폴트 전달인자를 오른쪽에서 왼쪽의 순서로 첨가해야 한다. 즉, 어떤 전달인자의 값을 내정하려면 그 전달인자보다 오른쪽에 있는 모든 전달인자를 디폴트 전달인자로 해야 한다.
8.7 참고-디폴트 전달인자를 가진 문자열 함수
◎ 함수의 다형성(함수의 재정의)
다음은 함수의 다형성에 대하여 알아보자. 디폴트 전달인자는 개수를 변화시켜 가면서 같은 함수를 호출하게 했다. 함수의 다형성은 함수의 재정의라고도 하는데, 이는 여러 개의 함수가 같은 이름을 사용할 수 있게 해준다. ‘다형성’이라는 표현은 많은 형태를 가질 수 있게 해 준다.
함수 재정의의 중요한 열쇠는 함수의 전달인자 리스트인데, 이것을 함수의 시그내처라고도 한다.
8.8 참고-left() 함수의 재정의
- LUA_4 . . . . 14 matches
1. 함수
오늘은 함수에 대해서 알아보겠습니다. 루아에서 함수도 하나의 객체(?)입니다.
>a() -- 그러면 a 도 함수가 된다.
이처럼 간단하게 foo라는 함수를 만들어 봤습니다.
[ function 함수명() end ] 형태로 함수를 만들 수 있습니다.
이제 매개변수를 넘겨서 반환값을 받는 함수를 만들어 보겠습니다.
sum은 a,b 라는 매개 변수를 받아 a+b 연산을 한 후 반환해 주는 함수 입니다. 이제 좀 특이한 루아만의 가변 매개변 수, 복수 반환 함수를 만들어 볼까요?
함수는 사용하기에 따라 변형할 수 있는게 많아서 천천히 다양한 방법을 설명하겠습니다. 대신 변수의 범위(scope)에 대해서 간단하게 예제로 살펴 보겠습니다.
>> print (inside) -- 상위 함수의 local 변수에 접근 할 수 있습니다.
local 이 없이 변수를 선언한다면 함수 밖에서도 값을 참조/변경 할 수 있습니다.
변수 범위는 이 밖에도 다양한 이슈를 만들 수 있습니다. 예를 들면 do ~ end 문에서도 local 로 범위를 한정할 수 있고 function 자체도 변수와 같이 범위(scope)를 한정하여 사용할 수 있습니다. 또한 local을 사용하지 않으면 전역 범위 내에서 변수나 함수 자체를 접근/변경할 수 있습니다.
- VendingMachine/재니 . . . . 14 matches
== 클래스 나누기 ==
이정도면 클래스를 나누는 것은 끝난 것 같으니깐 각각의 객체(클래스)에 필요한 역할을 나누어보자..^^
* 클래스를 너무 많이 만들어서 괜히 복잡해졌다는 재동이 형의 지적을 받았습니다.[[BR]]
아직 클래스 사용법도 제대로 모르는지라 서툴기도 하고.. 결론은 역시 공부해야할 것이 많다는 것...^^
''클래스 수가 많아서 복잡해진건 아닌듯(모 VendingMachine 의 경우 Requirement 변경에 따라 클래스갯수가 10개 이상이 되기도 함; 클래스 수가 중요하다기보다도 최종 완료된 소스가 얼마나 명료해졌느냐가 복잡도를 결정하리라 생각). 단, 역할 분담할때 각 클래스별 역할이 명료한지 신경을 쓰는것이 좋겠다. CoinCounter 의 경우 VendingMachine 안에 멤버로 있어도 좋을듯. CRC 세션을 할때 클래스들이 각각 따로 존재하는 것 같지만, 실제론 그 클래스들이 서로를 포함하고 있기도 하거든. 또는 해당 기능을 구현하기 위해 다른 클래스들과 협동하기도 하고 (Collaboration. 실제 구현시엔 다른 클래스의 메소드들을 호출해서 구현한다던지 식임). 역할분담을 하고 난 다음 모의 시나리오를 만든뒤 코딩해나갔다면 어떠했을까 하는 생각도 해본다. 이 경우에는 UnitTest 를 작성하는게 좋겠지. UnitTest 작성 & 진행에 대해선 ["ScheduledWalk/석천"] 의 중반부분이랑 UnitTest 참조.--["1002"]''
- PairProgramming . . . . 13 matches
* 구현과제 : 데이타베이스 클래스(Database.inc)
참고사항 : 몇몇 함수에 대해서만 TDD를 적용시켰다.
나는 .NET의 System.Data의 구조를 보고 즉시 PHP에 적용시키고 싶어졌다. ASP.NET에는 SqlConnection , OdbcConnection , OleDbConnection을 제공해 준다. 이 클래스들을 잘 사용하면 DataTier의 종류가 바뀌어도 코드의 수정을 최소화 시킬 수 있다. PHP는 여러가지 종류의 데이타베이스 관련함수를 제공해준다. 어떠한 데이타베이스를 사용하느냐에 따라 동일한 기능을 하는 다른 이름의 함수를 호출해야만 한다.
IConnection을 이용해 각각의 Connection에 대해 단일의 인터페이스를 제공하고 IConnection을 구현하는 MySqlConnection , SqlConnection , OciConnection을 만들자는 것이 나의 생각이었다. 파트너는 switch구문을 이용해 클래스의 상속 구조를 없애는 것과 비교해서 어떠한 이점이 있는가에 대해 질문했다. 이것은 장시간의 토론으로 이어졌다.
하나의 클래스를 구현하고 구현된 하나의 클래스에서 switch로 호출되어야 하는 함수를 결정하면 된다는 것이었다.
나는 일차적으로 switch코드를 없앨 수 있다는 점을 설명했다. 우리는 Connection클래스가 그다지 크게 바뀌지 않을 것이라는 것에 대해 동의했었고 이 점을 근거로 switch를 사용하는 것이 유지보수를 힘들게 하는가에 대해 질문했다. 솔직히 이정도 코드라면 누구나 수정할 수 있을 것이라고 생각한다. 그리고 그렇게 많은 시간을 필요로 하는 작업도 아니라고 생각한다. 파트너는 Connection을 생성하는 부분을 include 화일로 관리하고 그곳에 한번만 define문을 작성하면 문제가 없다고 주장했다.
추가적으로 토론했던 사항 : Connection 클래스의 생성자에 매개변수로 데이타베이스 타입을 넘겨주면 된다는 것과 파생된 클래스를 생성하는 것
긴 토론 끝에 파트너는 나의 의견에 동의했지만 만약 계속 이런 속도로 작업이 진행된다면 회사에서 가만있지 않을 것이다. (어제도 TDD를 사용했었는데 기존의 코딩시간에 비해 3배정도 더 늦어졌다. 그리고 다 끝내지도 못했고 무엇을 먼저 테스트 해야할지 갈팡질팡했었다. 처음부터 함수단위 테스트만 시도해야겠다는 생각이 원인같다.)
- UnixSocketProgrammingAndWindowsImplementation . . . . 13 matches
= 기본적인 함수/개념들 =
fprintf(stderr, "socket 함수에서 에러"), exit(1);
// bzero라는 함수도 있지만 초기에 0으로 채우는 것이 편하다.
// SERVER_IP의 경우 문자열 포인터를 넣어야한다.
= Server 가 될 프로그램에 필요한 함수 =
= Client 가 될 프로그램에 필요한 함수 =
※ connect와 server 함수중 어떠한 함수가 닮았는지 이야기 해보자.
= 정리에 필요한 함수 =
= server/client 공통 - 입출력 함수 =
◎ UNIX 체계에서 사용하던 함수들의 헤더파일이 Windows 기반에서는 존재하지 않을 수도 있다.
◎ main() 함수 내부에
// client의 요청이 오면 server는 accept() 함수로 요청을 받아들인다.
- DebuggingSeminar_2005/DebugCRT . . . . 12 matches
Debug C Runtime 클래스를 이용하면 라이브러리가 알아서 동적할당되는 메모리를 역추적하여 누수되는 메모리를 가늠하는 것이 가능하다.
|| _CRTDBG_CHECK_ALWAYS_DF || _CrtCheckMemory() 함수를 모든 new, delete 함수에 대해서 자동 호출 되도록 지정한다.[[BR]] 이 함수는 할당된 공간의 유효성을 지속적으로 체크한다. 즉 domainerror나 기타 메모리 access에 관한 부분을 검사한다. 대신 오버헤드가 상당하다. 그러나 그만큼 디버깅의 효율성을 높여줄 수 있다. ||
= CRT 기타 함수 =
CRT의 기본 함수들의 출력은 디버그 메시지 윈도우이다. 이를 변경하기위해서는 _CrtSetReportMode()라는 함수를 이용해서 출력에대한 일반 목적지를 지정하고, _CrtSetReportFile()를 이용해서 특별한 스트림 목적지를 설정해야한다.
''crtdbg.h는 ASSERT, ASSERTE라는 메크로 함수를 생성한다. 둘의 차이점은 ASSERTE는 assertion 표현을 보고하고, 다른 것은 하지 않는 다는 것이다.''
''두번째 인수는 파일 스트림의 _HFILE 형식의 포인터이거나 다음의 식별자들 중의 하나이다.''
대체로 클래스에서의 메모리 유출은 동적 멤버 변수들이 만들어졌을 때 해야하는 '삼의 법칙'을 지키지 않는데서 비롯되는 경우가 많다.
동적 멤버변수를 사용하는 경우에는 대입, 할당 생성자, 소멸자를 반드시 만들어야한다.
- DesignPatterns/2011년스터디/1학기 . . . . 12 matches
1. 처음엔 단순히 인터페이스 대신 넘겨받는 구체클래스를 써야해서인 줄 알았는데 상위기술이 하위기술에 의존하는 것이 아닌 하위기술이 상위기술을 지원하기 위해 만들어지는 것이라는것을 알게되었다.
1. 멤버변수를 선언하면 꼭꼭 getter/setter를 만들었던 나를 반성...(나중엔 귀찮아서 public으로 한적도 있다지)
1. 팩토리 메소드 패턴이 뭔지 잘 모르겠다. 기반 객체가 알지 못하는 파생 클래스를 생성한다니. 기반클래스는 원래 파생클래스를 알지 못해! 이말은 생성되는 파생클래스는 기반클래스를 '''반드시 확장해야 한다'''는 건가? 어려워.
1. 자바 스윙의 코드 일부를 보니 알거같기도.. 코드에서 기반클래스를 확장하는 파생 클래스가 아니라 속성이나 기능만 변경된 클래스를 구현 상속해 생성하고 있다.
1. '''Model''' : 비즈니스 로직에 필요한 데이터들을 저장하는 클래스군.
1. '''Control''' : Model과 View 사이의 정보 교환을 제어하는 클래스군. 모델군의 데이터를 뷰가 출력하는데 용이하도록, 뷰에서 받은 데이터를 모델에게 적합하도록 가공해준다.
- Yggdrasil/가속된씨플플/4장 . . . . 12 matches
* 장의 제목 그대로의 내용이다. 프로그램의 구조화(함수)와 데이터의 구조화(구조체) 등등을 설명하고 있다.
== 함수 ==
* 참조에 의한 전달은 그 전달인자의 별명(?)을 넘겨준다. 즉 그 변수 자체를 넘겨주는 것이나 다름없다. 즉, 함수 내에서 그 전달인자로 전달된 변수가 바뀌면 원래의 값에도 변화가 온다. 그래서 적절히 const로 값이 바뀌지 않도록 제한해주는 것도 좋다. 복사를 안 하므로 오버헤드를 줄일 수 있음.
인데, compare는 함수인데 괄호는 쓰지 않는다. 괄호를 쓸 경우 그 인자까지 알아서 써줘야할 것 같은데, sort의 정확한 구조를 잘 모르는 나에겐 좀 벅찬 방법이다. 하여튼 괄호는 쓰지 않는다.
compare 함수 포인터를 넘겨주면 students vector(또는 list)내에서 값을 꺼낸다. Student_info 형이 나오겠지 그 것들을 compare 함수에 넘겨주는 거다. --[인수]
* throw로 예외 상황이 발생되었다는 것을 알린다. 예외 클래스엔 여러개가 있으며, 생성자로 문자열을 집어 넣을 수 있고, 이건 일반적으로 출력이 안되지만, what()함수로 확인 가능.
== String 클래스 ==
* max()라는 함수가 의심스럽다. 분명 msdn에도 algorithm헤더에 있다고 했는데 컴파일하면 자꾸 정의되지 않은 이름이라 에러를 뱉어낸다. 이 함수의 정체는?
- MFC/DynamicLinkLibrary . . . . 11 matches
Library.DLL을 3개의 프로그램 A,B,C가 동시에 공유한다고 하면 각각의 프로그램이 실행될때마다 각 프로그램에서는 DLL파일의 함수로의 링크가 일어난다. 이런 과정은 윈도우 운영체제에 의해서 자동으로 이루어지고, 한개의 프로그램이라도 실행이 종료되지 않으면 윈도우는 DLL을 메모리에서 제거하지 않고 남겨준다.
프로그램과 DLL이 메모리 안으로 로드되자마자 사용되는 함수들에 대한 링크가 성립된다.
프로그램이 먼저실행되데 DLL은 프로그램의 요청이 발생한 시점에서 메모리에 로드된다. 그때가 되서야 프로그램은 DLL로부터 함수의 어드레스를 얻고 그것을 사용해서 함수를 호출한다.
관련함수) LoadLibrary(), GetProcAddress(), FreeLibrary()
DLL은 함수에 대한 코드만을 저장는데 국한되는 것이 아니다. 비트맵, 폰트와 같은 리소스들을 DLL 안에 위치시킬 수도 있다. 예를 들자면 카드놀이에 사용되는 Cards.dll 에서 카드들에 대한 비트맵 이미지와 그 것들을 다루는데 필요한 함수들을 포함하고 있다.
DLL 에 있는 요소들은 export 된 것들만을 접근 할 수 있다. export 는 함수, 클래스, 글로벌 정적 변수, 리소스들이 가능하다.
== DllMain() 함수 ==
독립적 실행은 불가능하지만 main함수의 변형된 형태를 포함한다. 이 곳에서는 dll이 사용되기 전에 초기화되는 내용들이 포함되게 된다. DLL초기 로드시 운영체제가 호출한다.
- MoreEffectiveC++/Operator . . . . 11 matches
* Item 5: 사용자 정의 형변환(conversion) 함수에 주의하라!
* C++에서는 크게 두가지 방식의 함수로 형변환을 컴파일러에게 수행 시키킨다:[[BR]] '''''single-argument constructors''''' 와 '''''implicit type conversion operators''''' 이 그것이다.
* '''''implicit type conversion operator''''' 은 클래스로 하여금 해당 타입으로 ''return'' 을 원할때 암시적인 변화를 지원하기 위한 operator이다. 아래는 double로의 형변환을 위한 것이다.
뭐 이런 암시적 형변환을 막을려면, 형전환 시키고 하는 암시적 사용을 하지 않고, 다른 함수로 명시적으로 해 줄수 있다.
우리는 ++와 --연산자(이하 가칭 가감 연산자)를 즐겨 쓴다. 이 연산자 역시 클래스에서 정의해서 사용할수 있다.
위의 코드에서는 strlen() 함수내부에서 p에 관련한 null pointer 검사가 필요하지 않다. 왜냐하면 && 에서는 앞의 조건이 부정 즉, ( false && anything ) 의 경우에는 뒤의 조건(anything)은 수행조차 안하기 때문이다. operator ||의 경우도 특정 조건에서,(true || anything) 뒤에 코드를 수행하지 않은다는 것은 비슷하다.
해당 함수(construcWidgetInBuffer())는 버퍼에 만들어진 Widget 객체의 포인터를 반환하여 준다. 이렇게 호출할 경우 객체를 임의 위치에 할당할수 있는 능력 때문에 shared memory나 memory-mapped I/O 구현에 용이하다 constructorWidget에 보이는건 바로
이거 간단히 보이지만 placement new의 전부이다. operator new의 역할은 해당 객체를 위한 메모리를 찾고(할당), 해당 포인터의 반환이고 placement new의 경우에는 호출자가 이미 메모리를 확보하였고, 단순히 포인터 반환만 해준다. 모든 placement new가 반드시 이런 pointer의 전달 역할을 한다. 그리고 size_t 인자가 아무런 이름이 없어도 반항 안한다. 자세한건 Item 6을 보면 이해가 갈것이다.
메모리 해제(deallocaion)은 operator delete함수에 행해지는데 일반적으로 이렇게 선언되어 있다.
- VendingMachine/세연/1002 . . . . 11 matches
1. 명확하지 않는 변수/함수&메소드 이름에 대해 - 이름을 다르게 바꿔준다. 또는 무엇을 하기 위한 것인가에 입각, 함수/메소드 로 추출한다. [[BR]]
3. 긴 메소드 - 함수 & 메소드를 따로 추출. 즉, 하나의 함수 내에서 하는 일들이 많다고 생각될 때. [[BR]]
4. 중복 - 중복되는 부분에 대해 함수 & 메소드로 추출.[[BR]]
하지만 이건 추후에 Vending Machine 에서 메소드를 다른 클래스에게로 이양시켜주면서 UI 부분과 관련한 클래스를 추출해 낼 수 있을 것 같다고 생각합니다. 여기서는 추후에 진행하도록 하겠습니다.
이 이외엔 쓰이지 않지만, private 멤버로 있습니다. 이러한 입력을 받기 위한 임시변수는 그냥 멤버에서 없애주면 됩니다.
그리고, select_drink-1 식으로 쓴 것이 많은데, 이 이유는 아마 번호를 1,2,3,4 ... 로 찍기 위함일 것입니다. 그리고 select_drink 또한 vending_machine 의 멤버인데, 특별히 하는 일이 없는 한 지역변수로 두는것이 낫습니다.
이쯤에서 문제점 - vending_machine 이 완전히 God 클래스입니다. 완전히 이 프로그램 자체가 vending_machine 객체와 동급이 되어버리죠.
- woodpage/VisualC++HotKeyTip . . . . 11 matches
*현재 커서에 있는 변수나 함수의 type이 tooltip으로 나옴
*멤버 변수 / 함수 목록이 팝업창으로 나타남
*디버그시 실행 하다가 함수나 어떤 루틴으로 안으로 들어가서 실행
*역시 이동하는 기술로 BrowseGoToDefinition 이라고 함 마우스 오른쪽 팝업메뉴에도 나옴 사용법은 예를 들어 fSelect()라는 함수를 사용했을때 그함수내용을 보고싶으면 fSelect에다가 커서를 놓고 F12를 누름 (변수,define도 됨) 그럼 fSelect()가 구현된(?)곳으로 이동함 사용하면 아주 유용함 단점은 *.ncb 파일이 조금 커짐 별문제 아님 사실 마우스 오른쪽 팝업에서 쓰는걸 더 많이 씀
*BrowseGotoReference라고 함 함수는 선언된곳으로 감 예를 들어 클래스 맴버 함수면 클래스 header로 감
*Ctrl + Shift + H 를 누르면 클래스 header에서 cpp로 cpp에서 header로 이동한다. 한마디로 원추~!
- C++스터디_2005여름/학점계산프로그램/문보창 . . . . 10 matches
static const int NUM_STUDENT; // 학생 수(상수 멤버)
Student * student; // 학생들의 배열 포인터
// 상수멤버 초기화
// 점수를 입력받아 객체배열의 멤버를 초기화
static const int NUM_GRADE; // 과목 수 (상수 멤버)
void find_average(); // 평점을 구하는 함수
void input_grade(); // 점수을 입력받는 함수
void show(); // 출력함수
// 상수 멤버의 초기화
fin.ignore(100, ' '); // 사용자 지정 문자가 나올때까지 읽어 버리는 함수
- CppStudy_2002_1/과제1/Yggdrasil . . . . 10 matches
int count=0;//함수가 호출된 횟수를 셈
cout<<"함수를 몇번 호출 합니까?";
cout<<"당신은 지금까지 "<<n<<"번 함수를 호출 하셨습니다.\n";
char *str;//문자열을 가리키는 포인터
//beany의 str멤버를 새 블록을 지시하도록 설정
//beany의 ct 멤버를 설정한다.
//함수는 사용자에게 이름과 핸디캡을 요구한다
//함수는 전달인자로 전달된 값들을 사용하여
//함수는 handicap을 새 값으로 초기화한다
//함수는 golf 구조체의 이름을 표시한다
- HardcoreCppStudy/첫숙제/ValueVsReference/김아영 . . . . 10 matches
- 함수는 인수의 값을 스택에서 읽어들인다.
- 변수 자체의 값을 전달하는 것이 아니라 인수로 사용되는 변수에 대한 포인터를 전달하는 것이다.
- 함수에 배열을 전달하는 유일한 방법이다.
- 함수내에서 인수로 사용되는 변수의 값을 변경할 수 있다. (특정 상황에 따라)
- 인수를 전달할 때에는 함수에 전달되는 인수가 포인터라는 사실이 함수 정의와 프로토타입에 반영되어야 한다.
- 함수내에서 전달된 변수를 사용하기 위해서 간접(indirection) 연산자를 사용해야 한다.
값에 의한 전달에서 변수의 값이 함수에서 변경될 수 없는 반면에, 참조에 의한 전달에서 변수의 값이 함수에서 변경될 수 있다.
- RedThon/HelloWorld과제 . . . . 10 matches
* HelloWorld를 .py파일을 실행해서 HelloWorld출력하기(3가지로) 힌트 : 클래스, 함수, 그냥
다음..함수를 이용한...나름대로..함수이길..바라고 있음...;;
* 문자열를 변수에 할당해서 그냥 출력(print), 리스트를 함수에 전달인자로 넘겨준 다음 루프를 써서 출력, 문자열을 함수에 전달인자로 넘겨준 다음 루프를 써서 출력하는 세가지 방법으로 숙제를 잘 했네.
그리고..클래스...상당히..어려울거같아...좀더..공부한후에 할께요..
사실 그 클래스때문에 오프모임을 하자는 거지. 클래스라는 문법도 생소할 뿐더러, 클래스를 가지고 객체 지향이라는 개념을 이야기할 수 있기 때문이야. --[Leonardong]
- whiteblue/MyTermProject . . . . 10 matches
// 함수 선언
// 메인 함수의 끝 //
////////////////// 메세지 출력 함수 //////////////////
/////////////// 선택 메뉴 함수 ////////////////
//////////////// 결과 출력 함수들 ////////////////////
///////////////// 그 밖의 함수들 /////////////////////
void sort(int * x) // 소트 함수
int input() // 올바른 입력을 위한 입력함수
void grade_() // 등급을 입력하는 함수
void pass() // 바로 넘어가지 않기 위한 함수
- 데블스캠프2002/진행상황 . . . . 10 matches
* 목요일의 ["RandomWalk2"] 에 대해서 다시 CRC 디자인 세션과 구현시간을 가져보았다. (["ScheduledWalk/재니&영동"], ["ScheduledWalk/창섭&상규"]) 이번에는 신입회원팀과 기존회원팀으로 나누어서 디자인 세션을 가지고, 팀별로 구현을 하였다. (신입회원 팀에서의 클래스 구현에서는 1002가 중간 Support)
Python으로 만든 스타크래프트 놀이는 참가자들이 무척이나 좋아했다. 또 그 직전에 Python Interactive Shell에서 간단하게 남자, 여자, 인간 클래스를 직접 만들어 보게 한 것도 좋아했다. 아주 짧은 시간 동안에 OOP의 "감"을 느끼게 해주는 데 일조를 했다고 본다.
* 대체적으로 RandomWalk 는 많이 풀었고, HanoiProblem 은 아직 재귀함수를 많이 접해보지 않은 신입회원들에게는 어렵게 다가간거 같다. - 상협
* 추상화 단계에 대해서 - 세미나 대상자의 수준을 파악하고, 그 사람에게 친숙한 지식들 (만일 컴구조에서 어드레스/옵셋 이야기를 그들이 배웠던 포인터의 개념과 같이 설명했더라면? 우리가 파이프라인 설명을 들었을때 책에서 세탁기의 예가 나온것처럼 설명을 했었더라면?)과 융합시키는 건 어떨까. 정직이가 중간에 '포인터 지금 어렵죠? 그거 나중에 어셈을 배우면 그냥 저건 메모리 주소에요' 라고 설명했었는데, 그것을 실제로 메모리 그림을 그려주고, 포인터의 값이 어떻게 들어가는지에 대해 설명했었더라면 어떠했을까? --석천
* 불필요한 스레드일지도 모르겠으나, 일단 완벽히 어셈쪽 이야기를 하는 것이 아니라, 단순히 C 언어같은 하이레벨 언어에서의 관점으로 얘기하는 것이라면, 포인터란 '가르키는 것' 이라는 추상적인 개념일 뿐입니다. 오히려 어설프게 메모리의 주소라는 개념을 알게 된다면 나중에 더욱 큰 혼돈을 불러일으킬 수 있습니다.. 저처럼요.. -["zennith"]
* 불필요한 스레드란 없으니 걱정말고. ^^; 개인적으로 C 와 어셈과의 포인터관계를 어디서 찾았냐면, 해당 주소값이란 것이 무엇인가에서 찾았다. (단, 내가 정직이나 남훈이보단 하드웨어 관련지식이 깊지 않다) '포인터 값을 화면에 찍었을 경우에 나오는 엄청나게 큰 숫자(윈도우의 경우 32비트) 의 의미는 무엇인가?' 라는 질문을 하게 되었고. 그 이후 메모리가 16메가바이트라는 건 메모리에 0번부터 16메가바이트-1 이라는 번호를 부여하고, 해당 번호에 값을 대입하는 것이라는 접근을 하게 되었지. (물론, 이것도 물리적 주소는 아니겠지. 결국 우리가 이용하는 주소란 OS 에 의해 한번 걸러진 논리적 주소겠지.) 추상화의 정도를 이야기하라는 건 꼭 해당 언어 기준으로 이야기하라는 게 아니라, 경험에 대한 연결고리(여기서는 'C에서 포인터 변수를 화면에 찍어보니 이상하게 큰 숫자가 나왔다' 정도)를 찾아보자라고 한다면 정말 이야기가 '추상적'이려나; --석천
- 새싹교실/2011/AmazingC/6일차 . . . . 10 matches
* 함수의 선언 방법
* 함수엔 반환형이 존재한다.(반환형을 쓰지 않아도 된다)
* 함수의 선언부: 반드시 함수 호출하기 전에 선언을 해놓아야 한다!!
* 함수의 선언부=정의부가 될 수 있다.
* sum2의 경우 호출시 메인함수 위에 선언이 되어있나 확인한 다음 sum2의 정의부를 실행한다!!
* 함수의 recursive호출
6일차를 너무 늦게 올렸다. 얘들아 미안 ㅋㅋㅠㅠ 함수에 대해 좀 자세하게 알려주고 싶어서 2파트로 나눴다. 함수의 기본적인 개념들이라, 그리 어렵진 않았을 것 같다. 그리고 삼항 연산자를 이용해서 팩토리얼을 계산하는 방법도 알려주었다. 다음 시간엔 지역변수,전역변수,정적변수에 대해 배우고, 함수를 이용한 다양한 연산을 연습합니다.-[[신기호]]
- Class . . . . 9 matches
물 : '물'이라는 클래스.
음.. 나만의 생각일지는 모르겠는데... 물 시리즈로 모델링을 한다면 물 클래스를 상속받는 지하수 클래스, 해수 클래스 등등으로 보통 가지 않남?;
해수 : '해수' 라는 클래스.
- 염분 : '염분' 이라는 클래스.
클래스 '염분'
염분 : '염분'이라는 클래스
- 바닷물 속에는 다양한 원소들이 '염분'이라는 단어로 추상화된다. ->클래스.
- DevelopmentinWindows . . . . 9 matches
* 윈도우즈 프로그래밍을 하기 위해 필요한 함수들을 제공
* 윈도우즈 API를 클래스로 포장하여 제공하는 클래스 라이브러리
||LPCSTR||NULL 문자로 끝나는 문자열 상수 포인터||
||LPSTR||NULL 문자로 끝나는 문자열 포인터||
* 함수명
* 윈도우를 만드는 함수는 CreateWindow, 메시지를 보내는 함수는 SendMessage
||p & lp||포인터 변수||
- OurMajorLangIsCAndCPlusPlus/stdio.h . . . . 9 matches
== 함수 리스트 ==
|| 함수형식 || 용도 ||
|| int fgetpos(FILE *, fpos_t *) || 해당 스트림의 포인터의 위치를 fpos_t에 저장한다. ||
|| FILE * freopen(const char *, const char *, FILE *) || 세번째 인자의 스트림을 닫고 그 포인터를 첫번째 인자의 파일으로 대체한다. ||
|| int fsetpos(FILE *, const fpos_t *) || 해당 스트림의 포인터를 지정한 위치로 옮긴다. ||
|| int fseek(FILE *, long, int) || 해당 스트림의 포인터를 세번째 인자를 기준으로 두번째 인자만큼 옮긴다. SEEK_SET : 스트림 시작, SEEK_CUR : 현재 포인터 위치, SEEK_END : 스트림 끝 ||
|| long ftell(FILE *) || 해당 스트림의 포인터의 위치를 리턴 합니다. ||
|| void rewind(FILE *) || 해당 스트림의 처음으로 포인터를 이동한다. ||
- VisualBasicClass/2006/Exam1 . . . . 9 matches
㉢ 폼 위에서 마우스 포인터를 컨트롤을 두고 싶은 위치에서 클릭, 드래그하면 컨트롤이 나타난다.
13. 서브프로그램과 함수에 관련된 설명 중 가장 부적절한 것은?(1점)
③ 함수는 수행한 결과를 호출한 프로그램에게 반한하는데 입력 인수는 여러 개일 수 있으나 출력 인수는 오직 하나이다.
④ 일반적으로 함수 이름이 F_Name일 경우, 이 함수 내부에는 F_Name = 식 형태의 할당문이 있어야 한다.
16. 다음의 주어진 함수(용어)에 결과를 기록하시오.(3점)
17. 날짜/시간 함수의 결과가 옳지 않은 것은? (7월 6일 오전 11시)(1점)
18. 다음의 결과를 보고 ①~③번에 필요한 함수를 입력하시오.(* 단, '_' 기호는 공백임.)(3점)
인터프리터이다 보니 평소에 많이 짜지 않는 이상 함수 하나하나의 특징을 잘 모르기 때문에...
- 데블스캠프2011/둘째날/Machine-Learning/NaiveBayesClassifier/김동준 . . . . 9 matches
// 들어온 데이터의 신뢰성을 체크하는 함수. 신뢰성이 없는경우 False 반환
//자기 Section 이 아닌 내용을 Calculate 하는 함수. Index 에 반응하며 수행시 초기화 후 계산한다.
//해당 단어에 대한 자기 Section 이 아닌 단어수를 Calculate 하는 함수. Index 에 대응하며 수행시 초기화 후 계산한다.
//해당 기사에 대한 연산 결과를 반환하는 함수. 양수일 경우 해당 Index Section 에 일치하는 기사로 판단한 것이며, 음수일 경우 해당 Index Section 에 일치하지 않는 기사라고 판단한 것이다.
// Ln[p(S) / p(!S)] 값을 계산하는 함수. Index 에 대응한다.
// Sigma Ln[p(Wi ^ S) / p(Wi ^ !S)] 값을 계산하는 함수. Index 에 대응한다. 단 특정 단어에 대한 Advantage 를 부과한다. (Advantage 함수 참조)
// 특정 단어에 대한 Advantage 부과함수. 해당 Index Section 에만 존재하는 단어일때 빈도에 따른 가산점을 부여한다. 가산은 해당단어수 / Section 전체기사수 * 50 이다.
// 해당 File 변수에 대한 Index Section 과의 매치율을 보여주는 함수. 맞은 것과 틀린것, 그리고 그 것에 대한 판단 확률을 반환한다.
- 새싹교실/2011/쉬운것같지만쉬운반/2011.3.29 . . . . 9 matches
* 표준 입,출력 함수 중 대표 함수 설명~
1. printf 함수의 작동 원리
4. 다음 printf 함수와 scanf 함수 사용 중 틀린 것을 고르고, 제대로 고치시오.
* 오늘은 표준 입출력 함수, 상수&변수의 의미와 각종 연산자들에 대해서 배웠다. 역시 배우면 배울수록 흥미롭다. 그런데 용운이는 다 알고있고 형준이는 안오고 뭔가 나만 배우고 있는 듯한 느낌이...... ㅜㅜ. 아무튼 지금은 무식해도 올해가 끝나갈 쯤엔 나도 C언어 마스터가 되야지. - 송치완
* 내가 새싹할 때 설명을 안했던 부분이 있어서 발견을 못했구나 ! scanf함수 라인의 의미는 "10진수 정수형을 입력받아 x 변수에 저장하겠다."인데, 이때 x 앞에 &를 붙여줘야 돼. "x -> &x" 이렇게 바꿔줘야 돼~ - [박성현]
1. 개행 문자(\n)는 printf 함수에서 줄을 넘길 때 사용합니다. 이것에 캐리지 리턴(\r)을 직접 타이핑하지 않는 이유는 printf 함수가 텍스트 모드로 출력하기 때문에 자동으로 캐리지 리턴이 앞에 붙게 되기 때문입니다.
- 실습 . . . . 9 matches
객체와 클래스 (성적 관리 프로그램)
성적 관리하는 프로그램을 클래스(class)를 이용하여 C++로 작성하여 본다.
1. 클래스(Class) 설계
Member 함수
입력함수 void Input(char szName[],int nKorean, int nEnglish,int nMath);
총점 함수 int GetTotal(void);
등수 함수 int GetRank(void);
등수 기록 함수 void SetRank(int nRank);
결과출력 함수 void PrintResult();
- 05학번만의C++Study/숙제제출/2 . . . . 8 matches
* 평상시에는 문자열의 주소를 하나의 전달인자로 취하여, 그 문자열을 한 번 출력하는 함수를 작성하라. 그러다가 0이아닌 int형 값을 두 번째 전달인자로 제공하면, 그 시점에 도달할 때까지 그 함수가 호출되었던 횟수만큼 그 문자열을 반복해서 출력한다. (문자열이 출력되는 횟수는 두 번째 전달인자의 값이 아니라 그 함수가 호출되었던 횟수와 같다.)물론 이 함수는 거의 쓸모가 없다. 하지만 이것은 이 장에서 설명한 몇 가지 프로그래밍 기술을 사용할 것을 요구한다. 이들 함수를 사용하여 함수의 작동을 보여 주는 간단한 프로그램을 작성하라
* 여기서 질문!! 전달인자가 1개인 함수와 2개인 함수만들어 오버 로딩 하라는 것인가? 그게 아니라면... cin을 라인별로 입력 받아햐겠는데.. 어떤때는 변수를 하나만 받고 어떤때는 변수를 두개 받아야하니.. 라인별로 처리 해야할듯.. 하지만 라인별로 처리해도....;;;; 음... 생각이 떠오르지 않음..;;; 쳇..;;[[BR]] 어제 교수가 defalte 에 대해 설명했던거 같은데.. 전달인자를 취하지 않으면 이미 입력된 변수의 값으로 처리한다. 라고...;; 음..;;;이렇게 해야하나?
- CppStudy_2002_1 . . . . 8 matches
* C++의 클래스 부분을 미리 여러가지 과제들과 함께 같이 공부하는 공간입니다.
|| 7.18 ||8.함수의 활용(104page)|| 458P ~ 460P 프로그래밍 연습 + ???? ||
|| 7.25 ||9.객체와 클래스(60page)|| ["BusSimulation"] ||
|| 8.1 ||10.클래스를 사용하자(64page)||["StringOfCPlusPlus"] ||
|| 8.9 ||11.클래스와 동적 메모리 할당(76page)||["LinkedList"] ||
|| 8.16 ||12.클래스 상속(72page)|| ["LinkedList/StackQueue"][[BR]]C++2팀과의 프로그래밍 잔치? 링크드 리스트로 스택,큐 구현||
상협. [STL/string|String] 클래스의 스펙을 어떻게 주었는지? 사람들이 왜 전부 String 이용 프로그램 GOD 클래스를 만드는걸까 궁리.
- 10학번 c++ 프로젝트 . . . . 7 matches
* 현재 시각일떄의 버튼 입력함수[김정욱]
* 초시계 함수[박정근]
* 초시계일때의 버튼입력 함수[박재홍]
* 알람 설정 함수[김정혜]
* 알람 설정 일떄의 버튼입력 함수[윤종하]
* 3부분 전부 연결 성공했으나, 초시계를 클래스로 묶으면 에러가 발생.
* 초시계 클래스 문제 해결해야지..
- COM/IUnknown . . . . 7 matches
COM 객체를 다루는데 있어서 가장 핵심적인 인터페이스. REFIID 를 이용해 ID 에 맞는 인터페이스 포인터를 얻을 수 잇다.
COM 객체를 다른 포인터에 할당하거나 NULL 로 초기화 할 때 호출하여 참조카운터를 올바르게 유지해야만 객체의 정상적인 소멸을 보장할 수 있다.
※ 이론적인 내용은 C++ 의 스마트 포인터 파트를 참조. 참조카운팅의 용도와 필요성에 대해서 숙지한다.
C++ 스마트 포인터에서는 참조 카운팅을 이용해서 dangling pointer 문제를 해결한다. boost 의 shared_ptr이 이를 구현한다.
IUnknown 은 구현체가 유효한 기간동안 인터페이스 포인터를 변경시키면 안된다.
인터페이스 포인터는 '''QueryInterface(IID_IUnknown, (void**) &pIUnknownInterface)''' 를 통해서 얻을 수 있으며, 이의 유효를 검사하는 것이 가능하다.
정상규현된 컴포넌트라면 인터페이스 포인터를 비교하는 것을 통해서 각 객체가 같은 컴포넌트의 인스턴스인지 확인이 가능하다.
- HanoiProblem . . . . 7 matches
* 재귀함수에 대한 이해
'''재귀함수에 대한 이해'''
재귀함수가 사용되는 대표적인 예 몇가지를 보여줍니다. 재귀함수 사용에도 그 종류가 다른데, 대표적인 종류들을 보여주는 것이 중요합니다. "아, 재귀함수라는 것이 이렇게도 사용될 수 있구나!" 퍼뮤테이션/콤비네이션, 피보나치수열, 트리검색, 팩토리알, 조건문과 재귀호출로 반복문(while) 만들기 등이면 충분하지 않을까 합니다.
그리고 재귀함수를 만들 때 유의점과 사고보조물을 가르쳐 줍니다. 유의점이라면 재귀함수는 리턴되는 값의 종류(타입)가 모두 동일해야 한다는 것, 재귀호출을 벗어나는 지점 근방에서 유의해야 한다는 점 등이고, 사고보조물로는 스택의 상태를 그림으로 그리는 방법이나, 수식을 사용하는 방법 등이 있겠죠.
- WinampPluginProgramming/DSP . . . . 7 matches
// 실제로 DSP 관련 처리시 호출되는 함수들.
config, // config 시 호출 함수.
init, // init 시 호출 함수
modify_samples1, // DSP 처리시 호출 함수
quit // quit 시 호출 함수
// 실질적인 callback 함수.
// this_mod 는 일종의 this pointer 라고 생각해도 좋을듯 하다. 해당 모듈(위의 mod1~5) 의 포인터이다.
- 조현태/놀이/지뢰파인더 . . . . 7 matches
데블스 캠프에서 배운 로보코드를 활용할 생각..^^ 뭔가 객체같은 느낌이 들어서 클래스로 만들어 주기로 했다.^^
그런데 클래스란거 배우지도 않고 막 써도 되는건가..ㅠ.ㅜ 나쁜습관이 들지도..^^;;
클래스명이 로보 만들어놓은 객체의 이름을 레인져로 지어주었다.^^;;;
갈수록 일에 치여 시간이 줄어든다.^^ 오늘은 클래스를 2개나 동원해서 레인져가 자료를 저장할 곳을 조금 만들었다.
한 클래스에서 다른 클래스를 붕어빵 찍듯이 찍어내고, 또 그 클래스가 여러개로 찍혀나가게 했는데..
- 삼총사CppStudy/Inheritance . . . . 6 matches
class CMarine // 마린을 정의한 클래스
class CFirebat // 파이어뱃을 정의한 클래스
다음날 문제점이 발견되었다. 마린과 파이어뱃으로 부대를 구성하여 배열에 저장하려고 하였는데 두개의 클래스가 틀리기 때문에 한개의 배열로는 포함할 수가 없었다.
protected: // protected를 사용한 이유는 상속받은 클래스에서도 이 멤버들을 사용할 수 있게 하기 위함이다.
마린과 파이어뱃은 이 유니트라는 클래스를 상속 받으면 된다.
- 새싹교실/2011/Pixar/4월 . . . . 6 matches
* 누나 솔찍히 어제 시험끝났다고 늦게자고와서 오늘 너무 피곤한상태에서 했어서 집중도못하고 죄송해요 ㅠㅠ. 레몬에이드 제가젤좋아하는건데 누나 짱맛있었어요. 오늘 함수를 배웠는데 시험전에 혼자 공부해놨던게있었는데 그거때매 우쭐해서 솔직히 오늘 좀 건방졌던거같아요 죄송해요 ㅠ-ㅠ . 전역변수 지역변수 그게 솔직히 아직도 엄청 잘은 이해가 안되요 누나. 더많이배우고싶어요 누나 ㅋㅋㅋ . 누나 저 마에스트로 그거 어떻게쓸지 감이안와요..ㅠ.ㅠ.ㅠ.ㅠ.ㅠ
오늘은 함수를 배웟고 재귀를 쓰는법을 배웟는데 재귀는 쫌 많이 어려웠어요
오늘은 변수종류에대해서 배웠다 local,global,static등에 대해배웠고, 반복문을 사용하여달력도 만들어보았고, 함수에 대해서도 배웠다.
오늘은 함수와 재귀와 변수 종류를 배웠다.
함수는 시험치느라 미리 공부해서 왠만한 부분은 다 알았지만 정확하게 함수의 개념에 대해서 알게 되었다
- 새싹교실/2012/열반/120402 . . . . 6 matches
== 재귀 함수 ==
* 별을 n개 출력하는 함수입니다.
* 위의 printstar(int) 함수가 정의되었다고 가정
* main은 함수이므로 정의할 때 괄호가 필요합니다. main -> main()
* while, do while 반복문과 재귀함수를 이용한 점찍기를 배웠습니다. -[권우성]
* 별찍기, do while, while을 배웠습니다. 제가 짠 함수가 맞아서 기뻤습니다^o^ -[채유빈]
- 새싹교실/2012/열반/120514 . . . . 6 matches
== 재귀함수 복습 ==
* 재귀 함수를 응용하려면 많은 연습이 필요합니다.
== 포인터와 주소 ==
=== 포인터 ===
// 포인터 변수를 선언할 때에는 '*'를 변수 이름 앞에 붙입니다.
// 포인터 변수 앞에 '*'를 써서 저장된 주소에 접근할 수 있습니다.
- 새싹교실/2012/주먹밥/이소라때리기게임 . . . . 6 matches
void (*func)(PLAYER *, PLAYER *); //신나는 함수포인터
//select에 정의된대로 정의된 함수들.
////////////////게임 프로세스 함수들.
//select에 정의된대로 정의된 함수들.
////////////////게임 프로세스 함수들.
- 새싹배움터05 . . . . 6 matches
|| 2_4/11 || C ([이승한]) || 기본문법과, 포인터 || 중간고사 대비라는 느낌이 진하게 될듯 ||
|| 3_4/25 || [C언어포인터특강] ([상규]) || 포인터 || 포인터를 알려주마! ||
C, 발표잘하는법, PPT제작 기법, [Python], [PHP], [ExtremeProgramming], ToyProblems, Linux, Internetworking(TCP/IP), Ghost(demonstration), OS(abstraction), OS+Windows, Embedded System, 다양한 언어들(Scheme, Haskell, Ruby, ...), 보안(본안의 기본과 기초, 인터넷 뱅킹의 인증서에 대해..), C언어 포인터 특강(?), 정보검색(검색 엔진의 원리와 구현), 컴퓨터 구조(컴퓨터는 도대체 어떻게 일을 하는가), 자바 가상머신 소스 분석
저는 포인터에 대해서 하기로 정해졌습니다. 그 다음으로 리눅스를 인택이형이 해주시면 되겠네요^^ --[상규]
- 이영호/미니프로젝트#1 . . . . 6 matches
// 클래스의 상속성으로 인해 기존의 클래스를 고치지 않아서 인것 같다.
file.c -> 파일 입출력을 다루는 함수와 메세지들을 Log하는 부분을 담당한다. 일단 프로그램을 어느 정도 만들고 구현하도록한다.
bot.c -> 봇에 관한 함수.
attack_#.c(# == 임의의 숫자) -> 공격 함수. 요즘 보안홀들을 체크하여 보안홀들을 공격하는 함수들을 집어넣자.
- 2학기파이선스터디/모듈 . . . . 5 matches
* 프로그램(함수, 클래스... )과 데이터를 정의
* 사용자가 모듈에 정의된 함수나 변수의 이름을 사용하도록 허용하는것 ( = 라이브러리)
* 모듈, 함수, 클래스 등..
- CppStudy_2002_1/과제1/CherryBoy . . . . 5 matches
cout << "당신은 출력 함수를 " << count << " 번 사용하셨습니다.\n";
//함수는 사용자에게 이름과 핸디켑을 요구한다
//함수는 전달인자로 전달된 값들을 사용하여
//함수는 handicap을 새값으로 초기화한다.
//함수는 golf 구조체의 이름을 표시한다
- CppStudy_2002_2 . . . . 5 matches
* C++의 클래스 부분을 미리 여러가지 과제들과 함께 같이 공부하는 공간입니다.
|| 7.18 ||["CppStudy_2002_2/객체와클래스"]||["CppStudy_2002_2/슈퍼마켓"]||
|| 7.25 ||["StringOfCPlusPlus"]||11.클래스와 동적 메모리 할당||
|| 8.9 ||STL(["STL/vector/CookBook"])과 리펙토링 몇가지||STL(["STL/vector/CookBook"], ["STL"])과 12.클래스 상속||
* 소스 올리고 난 다음 코드 리뷰 해보는지? 사람들이 꽤 중복된 코드를 쓴다던지, UI 부분과 로직 클래스 부분이 너무 같이 붙어있다던지 하는 것 같은데.. 재동 당신의 능력을 보여줘; --["1002"]
- MFC/Control . . . . 5 matches
하나의 컨트롤은 클래스와 연계될 수도, 안될 수도 있다. 정적 컨트롤의 경우 클래스가 필요없을 것 같지만 CStatic 이라는 클래스를 통해서 모양을 변경하는 것이 가능하다. 마찬가지로 버튼 컨트롤들의 경우도 대부분 Dialog 객체를 통해서 처리가 된다. CButton 클래스의 경우에는 컨트롤을 관리하는데있어서 객체가 필요할 경우에 이용하게 된다. 이러한 모든 컨트롤들은 모두 윈도우의 일종이기 때문에 CWnd 에서 상속된 클래스를 이용한다.
- Polynomial . . . . 5 matches
다항식을 표현하는자료구조는 크게 두가지로 생각해 볼 수 있다. linked list 와 array 이다. 배열은 모두들 잘 알겠고 linked list 는 동적으로 storage를 할당받아 각 노드를 포인터로 연결한 자료구조를 말한다..(라고 우선 설명만 해둬야지 정확한 정의는 내리지 못하겠다..-_-). 물론 동적으로 할당받지 않고도 linked list 를 구현할수 있지만 그럴꺼면 배열로 하는게 낫지 그 노가다를 뭐하러 하나...-_-
// 위의 정의한 구조체에 포인터 변수 두개가 더 필요하다.
다음과 같은 prototype 을 갖는 함수를 구현해야 한다. (이름은 달리해도 상관없다..)
* 다항식을 표현하는 클래스를 만들어서 operator overloading 을 사용해도 되겠지만 이는 위에 말한 내용을 이미 구현한 후 이걸 클래스로 포장하는거기때문에 지금수준에서는 무리라고 생각됨... - 임인택
- VendingMachine/세연/재동 . . . . 5 matches
2. 중복된 곳이 많던 buy()함수와 insertDrink()함수를 집중적으로 수정
3. 클래스명과 함수명 그리고 변수명을 좀 더 평범하게 변형
4. showDrinkMenu() 함수를 private로 만듬
- django/RetrievingObject . . . . 5 matches
데이터베이스에서 레코드를 조회할 때는 Model클래스를 관리하는 Manager클래스를 이용한다. 가장 간단하게는 모든 레코드를 가져오는 방법이 있는데, 모델마다 기본적으로 제공되는 object라는 매니저를 이용한다. object 매니저로 레코드를 조회하면 QuerySet이 반환된다. 이는 관계형 데이터베이스 CLI인 JDBC의 ResultSet과 유사하다.
사용자는 values함수를 이용해서 원하는 속성을 지정할 수 있다. 이는 검색 조건을 만족하는 레코드의 필요한 속성만을 이용하므로 효율적이다. 또한 values함수는 QuerySet을 상속한 ValuesQuerySet을 리턴하므로 다시 위에서 사용한 검색 조건을 사용할 수 있다. 하지만 ValuesQuerySet은 사전형(dictionary) 자료구조를 가지고 있기 때문에, 많은 수의 레코드를 얻어오기에는 부적절하다. 다음은 사원 정보에서 이메일 속성만을 얻어온다.
Django에서 기본적으로 제공하는 조인 연산은 없다. SQL문을 직접 수행하여 원하는 결과를 얻을 수 있다. 이는 JDBC의 인터페이스와 비슷하며, 커서를 이용하여 질의를 수행한 결과를 하나씩 얻어오는 방식을 사용한다. 다음은 특정 부서 에서 시행한 위험 관리 대책을 얻어오는 함수이다.
- 문자반대출력 . . . . 5 matches
* 함수를 만든다.
* 맞게 푼건지는 모르겠지만 파이썬은 자체적으로 거꾸로 해주는 함수가 있어서 솔직히 이런 문제는 풀기가 굉장히 쉽다. 위에서 저거 걸린 시간은 파일 입출력과 그 해당 함수 찾는 시간.. - 상협
* C 에도 라이브러리로 문자열 반전 시켜주는 함수를 제공합니다. strrev()라는 함수를 사용하면 '\0'바로 전 글자부터 거꾸로 만들어주죠. 물론 ANSI 표준은 아니고 Semantec, Borland, Microsoft 에서 제공하는 컴파일러의 경우에 자체 라이브러리로 제공합니다. 이식성을 생각하지 않는 일반적인 코딩에서는 위에 나열한 컴파일러를 이용한다면 사용할 수 있습니다. - 도현
- 이영호/64bit컴퓨터와그에따른공부방향 . . . . 5 matches
└저도 C (배우게 된다면 Assembly도.ㅎ)를 좋아 합니다.ㅎ 무엇보다 빠른 연산속도와 하드웨어 제어(해본적은 없지만), 포인터를 통한 메모리 접근등 좋은 점이 많아요.^^* 그렇지만 예를 들어 1만 팩토리얼을 출력하는 프로그램을 작성하시오. 라고 문제가 주어졌을때, C로 짜면 한나절이지만 파이썬으로 작성하게 되면 5분도 안걸리게 됩니다. 물런 연산속도가 느리기는 하지만 말입니다.^^ 이런 점에서 봤을때, 속도가 중요하다거나 특화된 프로그램을 작성해야할 경우에는 C와 같은 언어가 좋지만 보편적으로 사용하는 워드프로세서라든지 기타 응용프로그램이나, 제작해야할 프로그램의 제작시간이 짧을 경우에는 상위레벨의 언어가 좋을거라고 봅니다.^^ 뭐 이렇게 말은해도.. 사실 서로의 장점을 그때그때 맞춰서 섞어쓰는게 가장 좋지 않을까요?ㅎ (게임을 만들때 하위레벨의 언어로 하드웨어를 직접 사용한다 하더라도, 다이렉트를 이용하지 각각의 그래픽 카드에 맞춰서 프로그램을 만들지 않는것과 비슷한것 같아요.^^) 이상 지나가는 행인1의 잡다한 생각이었습니다.^^* - [조현태]
(우선 제 지문의 맥락을 담은 질문부터. 과연 Java와 Python 개발자들이 Assembly+C개발자와 같이 좋은 효율의 다른언어 컴파일러를 만들 수 있을까요. 현재 함수보다 좋은 함수를 생각해 냈는데 그것을 구현하려면 low level의 지식이 필요한데, 자신은 Java와 Python 들만 알고 Assembly를 모른다면 어떻게 해야할까요?)
선배님께서 82년부터 기계어로 해오신 것들이 다른 언어를 접하고 그 기초를 익힐때 도움이 안되었을까요? C언어의 포인터만 생각해도 C언어를 처음 접하는 사람과 어셈블리를 접하고 C언어를 접하는 사람에게는 큰 차이가 있을 것 같네요.(저 역시 포인터의 어설픈 이해를 어셈블리를 조금 공부해보고 제대로 잡았으니까요) C언어만 접한 사람들이 왜 상수를 고치지 못하는지 제대로 이해할까요? (C언어 책의 대부분은 상수는 고치지 못한다라고만 말하지 메모리의 실행 코드 부분이어서 고치지 못한다고는 말을 하지 않죠 :) )
- 코드레이스/2007/RUR_PLE . . . . 5 matches
* Python 문법 기반이지만, 몰라도 상관없다. 주어진 함수들을 가지고 해결해 나가기 때문이다. 변수도 안쓴다. -_-
* 아래와 같이 def 를써서 함수를 정의할 수 있다.
* repeat 명령어를 써서 여러번 수행해야 하는 함수(명령어 포함)을 한번에 방복 횟수만 지정해서 사용할 수 있다.
* 벽 만들기 연습에서 한 코드들을 함수화 해서 중복 제거를 한다.
* 위의 if문과 함수 정의, repeat를 사용하여 아래 화면과 같은 상황을 처리한다.
- BasicJava2005/3주차 . . . . 4 matches
* 1.4이전 : BufferedReader클래스를 사용할 수 있다.
* 5.0 이후 : Scanner 클래스를 이용하여 입력받을 수 있다.
* 동적 배열 클래스
* add/remove/get 함수등을 사용하여 배열에 마음대로 추가/삭제가 가능하다.
- BoostLibrary/SmartPointer . . . . 4 matches
스마트 포인터 쓰기
* 표준 라이브러리에도 auto_ptr 이라고 같은 개념의 클래스가 있지만, 버그가 있다. -_-;; auto_ptr를 컨테이너에 집어넣으면 버그땜시 스스로 삭제가 안되 메모리가 새는 아주 심각한 문제이다.
* 모든 객체에 스마트포인터를 쓰도록 프로그램 짜면 자바같은 느낌으로 짤수도 ...
shared_ptr_example2.hpp (헉 이너클래스가 되네.. 처음봤다 --;;)
- HaskellLanguage . . . . 4 matches
* 오늘 굉장한 사실 하나를 알아버렸다. Haskell에서 값인줄로 알았던 3도.. 함수였던 것이다... 덜덜덜;; - 임인택
* (Num t)는 t의 자료형이 Num이라고 알려주는 것이에요. 함수는 화살표가 -> 로 나오네요.^^
함수를 정의할 때 한 곳에 모아두어야 한다. 따라서 다음은 오류이다.
연산자 처럼 보이는 녀석들도 함수이다.
- JavaStudy2002/영동-2주차 . . . . 4 matches
* 상욱이의 지적에 따라 하나의 클래스에서 모든 걸 처리하지 않고 클래스를 여러개로 분리했습니다.
Class main--메인함수 클래스
- MFCStudy_2002_2 . . . . 4 matches
* 기본적인 MFC사용법(?), 간단한 클래스와 함수에 대한 공부
* 클래스 위저드 사용법에 대한 공부.
책이 없어서 그런지 좀 정리가 안된 느낌이다. 책을 빨리 사야겠다..함수를 몇개 배운거 같긴 한데 기억이 잘 나질 않으니..기억나는 사람이 이 페이지에 내용을 올려놨음 좋겠다.그리고 앞으로 스터디 할 때 책을 중심으로 차근차근 진도를 나가면 좀 정리가 될것 같기두 한데..-은지 [[BR]]
- MySQL . . . . 4 matches
=== MySQL Password 함수 ===
MySQL 에서 다른 데이터베이스로 데이터를 옮길 경우 기존 데이터중 문제가 되는 것이 바로 내장함수인 PASSWORD 를 이용해서 암호화를 한 부분이다. 다른 데이터베이스에서 이 데이터를 쓸 방법이 없기 때문이다. 이 경우, 로직 단에서 MySQL의 Password 함수를 대신 구현해줌으로서 해결을 할 순 있다.
단, 3.23 버전대에서만 동작함. MySQL 이 4.1 이 되면서 PASSWORD 함수의 구현이 바뀌었다.
- NamedPipe . . . . 4 matches
VOID InstanceThread(LPVOID); // 쓰레드 함수
// 쓰래드 함수를 생성한다.
|| {{{~cpp CallNamedPipe}}} || 메세지 형식의 Named Pipe를 Connect할 때 쓰이는 함수 ||
|| {{{~cpp ConnectNamedPipe}}} || Named Pipe 에 Connect할 때 쓰이는 함수||
- RUR-PLE/Newspaper . . . . 4 matches
= RUR-PLE/Newspaper(함수화 전) =
= RUR-PLE/Newspaper(함수화 후) =
= RUR-PLE/Newspaper(함수화 후, 함수 반복제거) =
- RandomFunction . . . . 4 matches
랜덤함수의 사용법입니다.
#include <iostream> // 랜덤함수는 iostream에 포함되어 있습니다.
int x = rand(); // rand()함수는 랜덤한 숫자를 리턴하는 함수입니다.
- RandomWalk2 . . . . 4 matches
만약 자신이 작성한 코드를 위키에 올리고 싶다면 {{{RandomWalk2/아무개}}} 패턴의 페이지 이름을 만들고 거기에 코드를 넣으면 된다. 이 때, 변경사항을 하나씩 완료함에 따라, 코드의 어디를 어떻게 바꿨는지(예컨대, 새로 클래스를 하나 만들어 붙이고, 기존 클래스에서 어떤 메쏘드를 끌어온 뒤에 다른 클래스가 새 클래스를 상속하게 했다든지 등) 그 변천 과정과 자신의 사고 과정을 요약해서 함께 적어주면 자신은 물론 남에게도 많은 도움이 될 것이다. 또한, 변경사항을 하나 완료하는 데 걸린 시간을 함께 리포팅하면 한가지 척도가 될 수 있겠다.
- STL . . . . 4 matches
* [http://oopsla.snu.ac.kr/~sjjung/stl/ptr_0001.htm 컨테이너에 포인터 저장하기(문제점과 해결책)]
"[STL] 컨테이너는 포인터를 염두에 둬두고 설계된 것이 아니라, 객체를 담을 목적으로 설계된 자료 구조이다." 이 말을 너무 늦게 봤네요ㅠ_ㅠ 기본 데이터 타입 이외에 사용자 정의 데이터 타입(분류_[class])의 포인터를 사용하기 위해서는 상당한 노력이 필요 할것 같습니다. 혹시 쉬운 방법은 없나요? - [이승한]
"사용자 정의 데이터 타입의 포인터를 사용하기 위해서는 상당한 노력이 필요할 것 같습니다" - 어떤 뜻인지? 힘들었던 예를 코드로 써주면 더 명확할 듯.~ --[1002]
- 데블스캠프2006/월요일 . . . . 4 matches
문법,함수,MSDN,SVN,SSH,파일입출력
|| 문법 || 함수 || MSDN || SVN,SSH || 표준입출력 || 계정 및 따로 공부 ㅋㅋ ||
||pm 10:00~12:00 || 함수 || 김정현 (01) ||
[데블스캠프2006/월요일/함수]
- 데블스캠프2009/수요일후기 . . . . 4 matches
* '''서민관''' - 수요일 수업에서 제일 마음에 들었던 부분입니다. 이클립스를 써 본 것도 좋았고, 무엇보다 JUnit test는 정말 마음에 드네요. 앞으로 갈수록 프로그램의 크기가 커질텐데 이클립스를 통한 svn 사용이나 JUnit test나 둘 다 팀 프로젝트용으로는 정말 좋은 기능이라고 생각합니다. 정말 뭐라고 더 칭찬을 해야 할 지 말이 안 나올 정도로 마음에 들었어요. 한 방에 제대로 프로그램을 못 짜는 저한테는 메인 함수 없이도 버그 수정이 가능하다는 건 정말 고마운 기능이죠.
* [송지원] - 사실 너무 아쉬웠다. JUnitTest를 위해 예로 제시한 계산기 클래스도 함수 하나 정도밖에 테스트 해볼 수 없는 이상한 설계의 클래스였다(너무 OOP 다음수업이라 캡슐화에만 신경을 썼던듯). 한 마디로 Java도, JUnit도 맛보기만 해준 꼴이 된것 같다. 하지만 '''JUnit은 확실히 강한 라이브러리다'''. 내가 몸소 느끼고 자발적으로 세미나한 이유도 그렇다. 내 세미나는 즈질이였지만 많은 1,2학년 학우들이 Java로 개발을 진행할 때 도움이 되었으면 한다.
- 문자반대출력/문보창 . . . . 4 matches
음 만약에 한글과 같은 확장문자가 담겼다면 process_wchar() 함수에서 약간의 꼼수를 부린다. 가상의 예(실제로 이렇게 되지는 않지만, 원리는 같음)를 들어보자. "가나" 라는 문자열을 ver1과 같은 통상의 프로그램으로 뒤집으면 "나가"와 같이 프로그래머가 원했던 결과가 나오는 것이 아니고 "ㅏㄴㅏㄱ"가 나온다. 그렇다면 확장문자를 판단해서 문자열을 뒤집기 전에 "가나"라는 문자열을 "ㅏㄱㅏㄴ" 이렇게 만들어 놓는다면 기존 ver1의 프로세스를 전혀 바꾸지 않고도, process_wchar()만을 추가하는 것으로 원했던 기능을 모두 수행하게 된다.
reverse(str.begin(), str.end()); // 문자열을 거꾸로 해주는 STL 함수
reverse(str.begin(), str.end()); // 문자열을 거꾸로 해주는 STL 함수
// 확장문자를 위한 전처리 함수
- 새싹교실/2012/햇반 . . . . 4 matches
3. 진도 - 함수
ㄱ.함수의 구조
ㄴ.함수의 사용방법
ㄷ.예제 - Add, Power함수
- 수/구구단출력 . . . . 4 matches
변수명은 가능하면 a,b 나 i,j 같이 이름만 보고 무슨 의미인지 알기 힘들게 짓기 보다는 조금 더 길어지더라도 이름만 보고 이게 무슨 역할을 하는 변수명이구나 하고 알수 있게 짓는 버릇을 들이는게 좋다. 주석이 필요 없을 정도로 변수명 함수명만 보고 이게 무슨 일을 하는 변수, 함수 이다라고 알수 있게 하면 더 더욱 좋다. - [상협]
상협이형의 말을 정리하자면 함수나 변수명을 잘 지으라는거지 그 변수가 무엇을 나타내는지, 함수가 어떤 기능을 하는지 잘 나타내라는거야. 음가(beveragePrice)처럼ㅋ-[강희경]
- 5인용C++스터디 . . . . 3 matches
* [5인용C++스터디/클래스]
* [5인용C++스터디/클래스상속보충]
* [5인용C++스터디/클래스상속] - 조재화
- AOI/2004 . . . . 3 matches
잠깐 다른 사람 소스들을 봤는데 이런식이 많더라. 나쁘다는 건 아니다. 실제로 재동과 상규가 프로그래밍대회에서는 저런식으로 했었다. 이유는 대회에선 무조건 속도전이라 함수 이름이나 함수의 길이는 신경쓰지 못하기 때문이였다. 하지만 적어도 대회가 아닌 연습에서는 좀 더 흐름을 알아보기 쉽게 하는게 좋을 거 같다. --재동
uva robot의 경우 보통 300 번 이상의 test case 를 쓰는 것 같습니다. 동적 메모리가 아닌 정적으로 할당할 경우 이 점을 유의(?)하지 않으면 RE error(포인터 에러)가 납니다. 보창은 이것때문에 하루종일 프로그램을 뜯어고쳤으나, 결국 우연한 기회에 알게 되었습니다. LCD-Display의 경우 robot은 1000줄 이상을 test하는 걸로 보여집니다. -- 보창
- CC2호 . . . . 3 matches
포인터를 이해하는 것을 목표로 차근차근 진행할 거에요. 물론 숙제 나갑니다!
* 함수
* 포인터
- CollectionParameter . . . . 3 matches
ComposedMethod의 단점중 하나는, 작은 메소드들 사이의 연관때문이다. 큰 메소드 하나에서 공유되었던 임시 변수들이, 이제는 작은 메소드들 사이에 공유된다. 가장 해결하기 쉬운 방법은 ComposedMethod를 없애고 다시 하나의 큰 메소드에 다 때려넣는 것이지만, 안좋다. 또 다른 해결책으로는 이 작은 메소드들 사이에서 공유되는 임시 변수를 멤버변수에 넣는 것이다. 이것은 객체의 생명기간 동안 유효한게 아니라, 저 메소드들이 실행될때에만 유효하다. 역시 안좋다.
즉, 두 메소드의 결과를 모으는 경우인데, 그리 흔한 경우는 아니였던걸로 기억. 약간은 다르긴 하지만 나의 경우 CollectionParameter 의 성격으로 필요한 경우가 read/write 등 I/O 가 내부적으로 필요할때 또는 Serialization 등의 일이 필요할때. 그 경우 I/O 부분은 Stream 클래스로 만들고(C++ 의 Stream 을 쓰던지 또는 직접 Stream 클래스 만들어 쓰던지) parameter 로 넘겨주고 그 파라메터의 메소드를 사용하는 형태였음. --[1002]
- IsBiggerSmarter?/문보창 . . . . 3 matches
단순히 Greedy 알고리즘으로 접근. 실패. Dynamic Programming 이 필요함을 테스트 케이스로써 확인했다. Dynamic Programming 을 실제로 해본 경험이 없기 때문에 감이 잡히지 않았다. Introduction To Algorithm에서 Dynamic Programing 부분을 읽어 공부한 후 문제분석을 다시 시도했다. 이 문제를 쉽게 풀기 위해 Weight를 정렬한 배열과 IQ를 정렬한 배열을 하나의 문자열로 보았다. 그렇다면 문제에서 원하는 "가장 긴 시퀀스" 는 Longest Common Subsequence가 되고, LCS는 Dynamic Algorithm으로 쉽게 풀리는 문제중 하나였다. 무게가 같거나, IQ가 같을수도 있기 때문에 LCS에서 오류가 나는 것을 피하기 위해 소트함수를 처리해 주는 과정에서 약간의 어려움을 겪었다.
lcs_length함수에서 cost table을 만들어주는 과정의 running time은 O(n*n), memory cost는 O(n*n)이다. 그리고 print_lcs 함수에서 longest path를 거슬러 올라가는 running time은 O(n + n) = O(n)이다.
- JollyJumpers/황재선 . . . . 3 matches
2. main이 지저분하다. 함수로 추출하기도 뭐하다.
3. test코드를 다듬었다. 테스트할때마다 콘솔로 입력받는 게 귀찮아서 test클래스에서 메인 클래스의 field를 정의하고 진행했다. 또 다른 테스트를 하기위해서 고쳐야할 부분이 흩어져 있다. 테스트코드의 설계에 관심을 가져야겠다.
- LIB_3 . . . . 3 matches
이 함수는 스케쥴링을 위한 준비 과정 TCB들을 다 초기화 해 준다.. 겁이 많아서 그냥 다 초기화 해줬다.[[BR]]
여기서는 MAIN에서 본 듯 태스크를 만들어 주는 함수
// Init the TCB by argument <----- 함수에서 얻은 변수들로... 초기화...ok???
- PowerOfCryptography/이영호 . . . . 3 matches
// 반올림은 ceil, floor 함수로 효율성 있게 구성한다.
// 여기서 문자를 숫자로 변경하고 log10 함수를 사용한다.
// 수학 함수는 func(). n, p를 받아들이고 정수 k를 반환함.
- PowerOfCryptography/조현태 . . . . 3 matches
필요할때마다 malloc으로 할당하고 포인터로 넘겨서 연산하는 방법이 있습니다만....(귀찮다...귀찮다..귀찮다..윽.. 이게 아니잖아!!) -[조현태]
한번 공부하고 만들어봐... C언어에서 인라인 어셈 써서 함수 만들어두 좋구. 아래 참고. - [이영호]
;;ㅁ;; 음.. 영호선배는 넘흐 마니 알고이쩡..>ㅃ<;; C언어 소스 봐도 모르게떠용..ㅎㅎ 64비트형의 인트형의 변수를 두개 지정하고 a에다가 최대값을..(아마 부호가 있기 때문에 -1저장됬을듯한..)넣고 b에는 a-1을.. 그럼 -2가 저장..;; 음.. 이게 아니라 혹시 b가 포인터라서 메모리 한칸 앞쪽을 잡아주는 건가요? 음.. 그러면 할당되지않은 메모리를 건드는 사태가..;;ㅁ;; 이것도 아닌가.. 연구를..;;ㅁ;; - [조현태]
- Randomwalk/조동영 . . . . 3 matches
// 2중동적배열을 만드는 함수
// 바퀴벌레가 범위를 벗어나지 않도록 해주는 함수
// 바퀴벌레를 이동시키고 카운트를 하는 함수
- Yggdrasil/가속된씨플플/2장 . . . . 3 matches
== 클래스 string ==
* 1장에서 배운 string 클래스에 추가할 내용. SeeAlso ["Yggdrasil/가속된씨플플/1장"]
std::string::size_type//unsigned형의 멤버변수로, 담을 수 있는 최대 문자 갯수를 저장한다. 글자수에 알맞는 type으로 알아서 정의하는 듯.
- 논문번역/2012년스터디/이민석 . . . . 3 matches
강도 분포의 평균값의 변화 뿐 아니라 하단 contour와 상단 contour의 방향을 고려하기 위해 추가적으로 세 가지 방향성 특징을 계산한다. 말인 즉 우리는 네 lower countour 점, upper contour 점, sliding window 내 평균값을 통해 줄들을 재고 선 방향들을 (8), (9), (10) 특성으로 각각 사용한다. (뭔 소리) 더 넓은 temporal context를 고려하여 우리는 특징 벡터의 각 성분마다 근사적인 수평 미분을 추가로 계산하고 결과로 20 차원 특징 벡터를 얻는다. (윈도우당 특징 10개, 도함수 10개)
특징 벡터들을 decorrelate하고 종류 분별력을 향상하기 위해 우리는 훈련 단계와 인식 단계에서 LDA를 통합한다. (cf. [6]) 원래 특징 표현을 일차 변환하고 특징 공간의 차원을 점차 줄이며 최적화한다. 일차 변환 A를 구하기 위해 훈련 자료의 클래스내 분산(within class scatter) 행렬 Sw와 클래스간 분산(between class scatter) 행렬 Sb를 이용하여 고유 벡터 문제를 해결한다. 이 분산(scatter) 행렬들을 계산하여 각 특징 벡터의 HMM 상태와 함께 이름표를 붙여야 한다. 우리는 먼저 일반적인 훈련을 수행하고 훈련 자료들을 상태를 기준으로 정렬한다. 분산 행렬을 구했으면 LDA 변환은 다음 고유 벡터 문제를 풀어 계산한다.
- 데블스캠프2005/RUR-PLE/정수민 . . . . 3 matches
추신: 궁금한 점이 있소.muggi함수의 제일 아래 ()는 무엇을 뜻하는 것이오? 없어도 실행이 잘 되오.
먹기함수 제일밑에 ()는 수정중에 실수로 남아있던거 =0=;; 근데 저게있어두 실행이 돼긴돼는군;;;
그리고 여기서 재귀함수는 선을 그어서 그밑에있는건 무조건 실행해 더 낮은 줄에있어도 if이있으면 실행이 돼는 =0=;;
- 데블스캠프2011/다섯째날/후기 . . . . 3 matches
* 마지막날이다 보니 다들 후기 갯수가 좀 적군요. Rurple에 이어서 Python을 공부해볼 수 있어서 좋았습니다. 파이썬이 러플로 했을땐 코드 길이가 짧았는데, 다른걸 짤땐 어떤 면에서 짧아지는지는 아직 잘 모르겠네요. 네트워크는 CAU_MAC인데다 MAC을 쓰다보니 충돌의 연속.. 결국 다른 사람들이 하는걸 같이 보는게 좀 많았네요.ㅋㅋ 11학번 친구들이 오늘은 2명이나 와서 참여해서 재밌게 했던거 같습니다.. 만 화수랑 호동이는 약간 어려워 하더군요. (저는 이미 그런 상황에 적응해버린건지 객체니 클래스니 해도 그냥 뭐... 했달까요 ㅎㅎㅎ;)
* 옛날에 c로 TCP/IP 프로그래밍 책을 본 적이 있었는데 그쪽에서 소켓을 이용하는 부분을 생각해보면 c에 비해서 파이썬쪽에서는 참 쉽게 되는구나 싶었습니다. 그리고 개인적으로 좀 신기했던게 리턴 값이 하나 이상 있을 수 있는 함수도 있다고 한 부분이었습니다. 이건 파이썬쪽의 특성인지 아니면 다른 인터프리터쪽 언어도 이렇게 될 수 있는지 궁금하네요. 네트워크쪽에 대한 기본적인 설명도 좋았습니다. 와이어샤크쪽에 대해서는 제대로 알려면 공부가 더 필요할 듯. -_-
* 수경이의 String 코드 레이스에서 저의 프로그래밍 달리기를 너무 빡세게 했던게 부끄러워서 이번엔 1학년 학우(저 같은 경우 성화수 학우)에게 설명해주고 그 학우가 하고 싶은 스펙으로 함께 프로그래밍 하고자 많이 노력했습니다. 파트너 교체 후 순의랑 파란 바를 만들어버리는 실수를 저지르긴 했습니다만 제가 부족한 탓이었구요-_-;; 개인적으로 화수의 '0층부터 지하까지' 아이디어는 신선했어요. 형진이가 처음에 의도했던 엘레베이터 문제(밖에서 누르고 층을 누르는 케이스)는 다른 클래스도 필요하고 일단 화수를 이해시키는데에 초점을 둬서 그걸 못 푼 점은 좀 아쉬웠어요.
- 레밍즈프로젝트/프로토타입/에니메이션 . . . . 3 matches
추상화 기초 클래스.
에니메이션이 필요한 객체들은 이 클래스를 상속 받음으로서 에니메이션 처리를 할 수 있다.
이 클래스는 더블버퍼링과 bmp그리기를 자동화 시켜둔 [레밍즈프로젝트/그리기DC](CmyDouBuffDC)를 사용하여 드로잉을 수행한다. (CDC를 사용하는 도 있지만... 편의를 위해서...)
- 숫자를한글로바꾸기/조현태 . . . . 3 matches
소스가 길어 보이지만 저기의 stack이라는 클래스.. 사실 저번에 [LittleAOI]에서 만들어서 2번이나 사용했던 클래스다.
음;; 그런게 존재하는건 아니구... C언어면 C언어답게 하는 것이 좋구 C++이면 C++답게 코딩하는게 좋은데.. malloc은 C언어에서 쓰이잖아. 물론 C++에서도 쓰이겠지만 C와의 호환성 때문이지 정말로 쓰이는것은 new니까 new를 쓰는게 좋다는거지. 클래스를 malloc으로는 할당 못하거든.
- 05학번만의C++Study/숙제제출/1 . . . . 2 matches
섭씨 온도를 전달인자로 전달받아 화씨 온도로 환산하여 리턴하는 사용자 정의 함수를 main() 함수가 호출하는 프로그램을 작성하시오. 프로그램은 섭씨 온도로 입력할 것을 요구해야 하고, 다음과 같은 실행 결과를 출력해야 한다. 참고로, 섭씨 온도를 화씨 온도로 변환하는 공식은 Fahrenheit = 1.8 X Celsius + 32.0 이다.
- AcceleratedC++/Chapter1 . . . . 2 matches
초기화, end-of-file, buffer, flush, overload, const, associativity(결합방식), 멤버함수, 기본 내장 타입, 기본타입(built-in type)
- AppletVSApplication/영동 . . . . 2 matches
* main() 함수를 반드시 포함한다.
* 애플리케이션과는 달리 main()함수가 필요없다.
- AppletVSApplication/진영 . . . . 2 matches
* "'''Application'''"은 main()함수를 포함하고 있어서 자기 스스로 실행이 되는 반면에
* "'''Applet'''"은 main()함수 없이 자기 스스로 실행되지 않고 html에 의해 돌아가는 것 같습니다.
- C++ . . . . 2 matches
벨 연구소의 [http://www.research.att.com/~bs/homepage.html Bjarne Stroustrup]은 1980년대에 당시의 [C]를 개선해 C++을 개발하였다. (본디 C with Classes라고 명명했다고 한다.) 개선된 부분은 클래스의 지원으로 시작된다. (수많은 특징들 중에서 [가상함수], [:연산자오버로딩 연산자 오버로딩], [:다중상속 다중 상속], [템플릿], [예외처리]의 개념을 지원하는) C++ 표준은 1998년에 ISO/IEC 14882:1998로 재정되었다. 그 표준안의 최신판은 현재 ISO/IEC 14882:2003로서 2003년도 버전이다. 새 버전의 표준안(비공식 명칭 [C++0x])이 현재 개발중이다. [C]와 C++에서 ++이라는 표현은 특정 변수에 1의 값을 증가시키는 것이다. (incrementing이라 함). C++이라는 명칭을 이와 동일한 의미를 갖는데, [C]라는 언어에 증가적인 발전이 있음을 암시하는 것이다.
- CProgramming . . . . 2 matches
함수
포인터
- ComputerNetworkClass/Report2006/BuildingProxyServer . . . . 2 matches
문자열 파싱에서 아주 편리한 함수
늦은 것 같지만... -_-;; 휘동이에게 말해줬다가 실패한 함수에 대한 내용올림... scanf가 아니라 sscanf 였음
- DebuggingSeminar_2005/UndName . . . . 2 matches
DLL 파일에 의해서 분석된 내용을 보면 DLL 에 함수의 이름이 이상하게(?) 변형되어 있는것을 확인하실 수 있는데(DUMPBIN.EXE 를 통해서 가능합니다.) 이 이름의 원형을 알고 싶을때가 있습니다. 그럴때 undname.exe 라는 파일을 사용하시면 아주 쉽게 확인해 보실 수 있습니다.
''디버깅 세미나에서는 이러한 함수의 이름이 컴파일 옵션으로 설정되는 map 파일안에 존재하는 것으로 이용하였다.'' - [eternalbleu]
- Devils . . . . 2 matches
이 두 단체는 [제로페이지]의 규모가 작아지고, 과거의 시작 멤버 이후로 모임의 강도가 약해지면서 [제로페이지]와 통합하였는데, [데블스캠프]는 [데블스]의 정신을 이어 받은 신입생을 위한 밤새기 세미나로 남아 있다.
[Devils]의 발음에 대한 토론은 굉장히 많았으며, 창립멤버들이 '''[데블스]'''로 읽기로 결정해서 의견을 존중한다.
- DirectVariableAccess . . . . 2 matches
와드 아저씨의 말로는, '클래스에 아주 적은 양의 메소드만 존재한다면, getter/setter를 추가하는 것만으로도 메소드의 수가 두배가 되어버린다. 이는 전혀 사용되지 않을 유연성을 위해 쓸데없이 갯수를 늘린 것이다.' 라고 한다.
하지만 이 클래스가 상속이 될 가능성이 있다면, setter/getter를 오버라이딩 해서 사용할수 있으므로, IndirectVariableAccess를 쓰는 것이 괜찮다.
- DirectX2DEngine . . . . 2 matches
* 앞으로의 계획 : Timer 및 Animation 클래스의 구현.
* 계속 구현 : Timer 클래스, 상속을 위한 처리 및 DeviceLost 처리
- HardcoreCppStudy/두번째숙제/CharacteristicOfOOP/김아영 . . . . 2 matches
객체지향 프로그래밍에서 다형성이란 근본적으로 상속에 뿌리를 두고 있다. 조상 클래스로부터 상속을 받아 새로운 객체들이 파생되어 생성된다. 이때 만약 새객체들이 모두 조상 클래스와 모두 동일한 값만 가지고 있다면 새로운 객체로서 의미가 없다. 왜냐면 그것을 만드는 이유는 무언가 다른 역할을 하기 위해 생성하는 것이기 때문이다. 그래서 다형성이란 조상이되는 객체로부터 상속을 받아 다른 결과물을 산출해 낼때 다형성이라는 의미를 부여할 수 있게 된다.
- HardcoreCppStudy/첫숙제 . . . . 2 matches
== 함수의 중복정의 ==
* 함수의 중복정의(Overloading)에 대해 기술할 것. 예제도 스스로 만들어 보기 // 책에는 재정의라고 나와있음.
- HardcoreCppStudy/첫숙제/Overloading/임민수 . . . . 2 matches
함수의 중복정의라 함은
함수의 이름은 같게 하되 전달인자들의 개수나 형식에 따라 다르게 사용될 수 있도록 정의하는것을 말함..
- Java2MicroEdition . . . . 2 matches
그림을 보면 맨 아래에 MID, 즉 휴대전화의 하드웨어 부분이 있고 그 위에는 Native System Software가 존재하며 그 상위에 CLDC가, 그리고 MIDP에 대한 부분이 나오는데 이 부분을 살펴보면, MIDP Application과 OEM-Specific Classes로 나뉘어 있는 것을 알 수 있다. 여기서의 OEM-Specific Classes라는 것은 말 그대로 OEM(Original Equipment Manufacturing) 주문자의 상표로 상품을 제공하는 것이다. 즉, 다른 휴대전화에서는 사용할 수 없고, 자신의(같은 통신 회사의) 휴대전화에서만 독립적으로 수행될 수 있도록 제작된 Java또는 Native로 작성된 API이다. 이는 자신의(같은 통신 회사의) 휴대전화의 특성을 잘 나타내거나 또는 MIDP에서 제공하지 않는 특성화된 클래스 들로 이루어져 있다. 지금까지 나와있는 많은 MIDP API들에도 이런 예는 많이 보이고 있으며, 우리나라의 SK Telecom에서 제공하는 SK-VM에도 이런 SPEC을 가지고 휴대전화의 특성에 맞는 기능, 예를 들어 진동 기능이나, SMS를 컨트롤하는 기능 들을 구현하고 있다. 그림에서 보듯이 CLDC는 MIDP와 OEM-Specific Classes의 기본이 되고 있다.
컨피규레이션이란 자바 가상머신과 코어 API들에 대한 명세를 의미하고, 프로파일은 그 상위의 클래스 라이브러리, 즉 표준 API 집합에 대한 명세를 의미한다. 이러한 개념적인 분할이 필요한 이유는 메모리와 CPU등의 크기와 성능이라는 측면에서의 요구사항이 동일한 디바이스들의 집합을 하나로 묶어서 컨피규레이션을 정의하고, 이러한 컨피규레이션을 바탕으로 각 디바이스들의 기능, 혹은 버티컬 시장의 요구사항에 맞추어 프로파일을 정의함으로써, 플랫폼의 통일성과 다양성을 동시에 만족시킬 수 있기 때문이다.
- LinkedList/세연 . . . . 2 matches
//스택의 처음을 가르킨는 포인터
//처음을 가르키는 포인터를 초기화
- NumberBaseballGame/jeppy . . . . 2 matches
void make_number(char *p); /* 임의 세자리 숫자를 생성하는 함수 */
void check_num(char *dest, char *src); /* 입력된 숫자와 비밀숫자를 맞춰보는 함수 */
- OurMajorLangIsCAndCPlusPlus/locale.h . . . . 2 matches
== 함수 ==
|| 함수 || 설명 ||
- OurMajorLangIsCAndCPlusPlus/math.h . . . . 2 matches
== 함수 (FUNCTIONS) ==
|| 함수명(Ascii) || 내용 ||
- RandomWalk2/상규 . . . . 2 matches
// 메인 함수
// Walk 하는 함수
- TAOCP/BasicConcepts . . . . 2 matches
f는 Q에서 Q 자기자신으로 가는 함수이다
두 순열을 곱한다. (합성함수와 비슷하다.)
- TkinterProgramming/HelloWorld . . . . 2 matches
# 함수 기반
# 클래스 기반
- ToyProblems . . . . 2 matches
- 창준 - Higher Order Programming과 로우레벨에서의 설명(예컨대 단순한 함수 포인터로 설명하는 것)의 차이는 미묘하고, 또 크다. 동사(달리다)를 명사(달림)의 품 안에 넣는 것이다. 이 사고에서 엄청난 차이가 생길 수 있다.
- VMWare/OSImplementationTest . . . . 2 matches
읽어서 특정 메모리 번지에 로드한 후 그 시작 함수 (엔트리 포인트 함수)로 점프하게
- [Lovely]boy^_^/USACO/WhatTimeIsIt? . . . . 2 matches
* 좀 잡다한 함수가 마니 들어갔군..
* 자주 만들어서 쓰는 함수는 라이브러리화를 해야겠다
- django . . . . 2 matches
* [http://www.mercurytide.com/knowledge/white-papers/django-full-text-search] : Model 의 Object 에 대한 함수들 사용방법
* [http://www.b-list.org/weblog/2006/06/13/how-django-processes-request] : Template 에서의 변수 참조에 대한 설명. 필수!!, 리스트나, 맵, 함수등에 접근하는 방법
- whiteblue/MyTermProjectForClass . . . . 2 matches
== 클래스 입력 ==
=== 메인 함수 ===
- 경시대회준비반/BigInteger . . . . 2 matches
C++ 용 BigInteger 클래스로 거의 모든 연산을 지원한다. UVA 사이트의 구식(?) 컴파일러에도 문제없이 통과할 뿐 아니라, 성능또한 훌륭하다. 고정도 정수 연산을 하는 문제의 경우, 고정도 연산을 하는 라이브러리를 본인이 직접 짜거나, 이 클래스를 이용하면 된다. 몇 일동안 삽질한 결과 후자가 낫다는 판단이 선다. 되게 잘 짜여진 코드다. 시간 내서 분석해봐야 겠다.
- 김재현 . . . . 2 matches
------포인터 실습-----------
포인터에 대한 이해가 아직 부족해서 스스로 코드를 짜진 못하고,교수님이 올리신
- 김희성/MTFREADER . . . . 2 matches
int LastErrorCode(); //최근에 일어난 클래스 내부의 에러를 반환한다.
point=*((unsigned short*)((unsigned char*)$MFT+20));//Offset으로 포인터 이동
- 데블스캠프2009/화요일후기 . . . . 2 matches
* '''서민관''' - 자바로 로봇을 움직이는 시간이었는데, 역시 코드를 짜서 그것이 무언가를 하는 것을 볼 수 있다는 것은 꽤나 괜찮은 경험이었습니다. 좀 아쉬웠던 점은 어떤 변수나 함수가 있는지를 확실하게 몰라서 괜찮은 물건은 만들지 못 했다는 점이네요. 그리고 제 탱크가 너무 약했다는 점하고...
* '''서민관''' - 개인적으로 이번 화요일 수업에서 가장 마음에 드는 수업이었습니다. 이런 식으로 시간의 흐름에 따라서 추상화 개념이 발전하는 모습을 보고 있으니 참 대단하다는 생각이 들었습니다. 그리고 반복을 줄이기 위한 방법들(ex - 반복문, 자료형, class) 각각이 무엇을 위해서 만들어졌는지를 알아보는 것으로 평소에 아무 생각 없이 썼던 것을 다시 한 번 생각해 보는 기회가 되었습니다. 그리고 수업을 듣고 나니 추상화를 통해서 긴 프로그램 코드를 각각의 함수로 쪼개는 방법이 왜 중요한지도 조금 더 잘 알겠네요.
- 몸짱프로젝트/BinarySearchTree . . . . 2 matches
* 할일 : Delete 함수 리펙토링하기, parent 포인터 없애기
- 몸짱프로젝트/CrossReference . . . . 2 matches
// Cross Reference를 작성하기 위한 함수
string toString(int aNum) // 줄수를 string 객체로 바꾸는 함수
- 문자반대출력/허아영 . . . . 2 matches
그리고 char 함수를 처음 사용해서. 처음에 에러도 많이 났다.
비베에서는 한글이나 일본어처럼 2바이트를 사용하는 글자의 경우 알아서-_- 판단하고 한 글자 단위로 읽는 함수가 있긴 한데 씨에서는 알파벳과 같은 1바이트 문자인지 아니면 2바이트 문자인지를 어떻게 구분해야 할까요? -태훈 [zyint]
- 반복문자열/이강희 . . . . 2 matches
[반복문자열/허아영]을 읽어보세요. 함수를 이해하는데 도움이 되는 내용이 들어있습니다. 함수가 무엇일까요? -- [Leonardong]
- 상협/Diary/7월 . . . . 2 matches
|| ["비행기게임"] || 행동 클래스 30% 정도 하기 || 0% || 불행히도 ||
|| ["비행기게임"] || 행동 클래스 || 100% || 오케. ||
- 새싹교실/2011/學高 . . . . 2 matches
* [김세영]: 함수 전까지는 좀 쉬웠는데 함수로 넘어오니까 난이도가 높아진 것 같다.
- 새싹교실/2011/學高/8회차 . . . . 2 matches
* 컴파일은 안 해봤지만 함수 원형 선언 시 매개변수의 타입은 왜 써주지 않았는지 궁금하네요. 받을 때는 num으로 받고 쓸 때는 n으로 쓴 것도; 그리고 전역 변수를 안 써도 리턴 값을 통해 카운트 충분히 할 수 있을 것 같은데... - [김수경]
* 음... 헤더는 제가 실수한거구요. 하노이의 탑을 짤 때 제대로 짰는지 확인해보라는 의미로 count를 넣었기 때문에 굳이 함수의 형태를 건들기보단 전역변수를 임시로 선언해서 쓰는것이 더 좋을 것 같아서 이렇게 작성했습니다. - [윤종하]
- 새싹교실/2011/무전취식/레벨10 . . . . 2 matches
* strlen()함수의 사용에 대해 알아봤죠
// 분리된 단어 출력 함수
- 숫자야구/조재화 . . . . 2 matches
랜덤함수 설명은 더욱 공부하면 더 좋을꺼 같네요.
#include <iostream> // 랜덤함수는 iostream에 포함되어 있습니다.
- 이영호/시스템프로그래밍과어셈블리어 . . . . 2 matches
몇몇 게임(카트라이더, 워록, 대항해시대 등등)의 프로그래머들이 Application 층만을 다룰줄 아는 무식한 프로그래머라는 것을 알았다. (특히, 워록의 프로그래머는 프로그래머라기 보다 코더에 가깝고 배운 것만 쓸 줄 아는 무식한 바보이다. 그 프로그래머는 개발자로서의 수명이 매우 짧을 것이다. 3년도 못가 짤리거나 혹은 워록이라는 게임이 사라질걸?) - (이 게임들은 코드를 숨기지 못하게 하는 방법도 모르는 모양이다. 이런식으로 게임들을 건들여 패치를 만들 수 있다. KartRider는 요즘에와서 debug를 불가능하게 해두고 실행 파일을 packing 한 모양이다. 뭐 그래도 많은 코드들을 따라가지 않고 ntdll.ZwTerminateProcess에 BreakPoint를 걸어 앞 함수를 건들이면 그만이지만.)
프로그래머라면 Code의 본질을 알아야한다. 그것을 이루는 것이 Assembly이다. 이것을 수행하지 않은 프로그래머는 프로그래머가 아니라 Coder이다. Assembly로 특정 함수를 따라다니며 실제로 익히는 방법은 MSDN에서 나와있는 것을 그대로 베끼는 것보다 현명할지 모른다. 프로그래밍은 배우는것이 아니라 직접 Code를 짜보는 것이다. MSDN을 보는 것과 debug로 따라 가보는 것은 그 차이가 크다.
- 인수/Smalltalk . . . . 2 matches
* 짜놓고 생각 : 이건 스몰토크프로그래밍이 아니다. C++/Java의 냄새가 너무 많이 나는것 같다. 부분부분을 좀더 간단하게 할 수 있을것 같기도 하다. 책을 더 봐야 할듯 싶다. 인스턴스 생성할때도 인자를 넘겨 받을 수 있을 텐데 잘 안된다.(지금 보니까 그렇게 하지 말라 한다. 대충 찾아보니 팩토리 메소드를 많이 쓰는것 같다. 또 클래스 메소드 만드는법 알아낼라고 줄기차게 삽질을 했다.--;) do라는 좋은게 있었군.
* 2차원 배열 클래스가 있었다. 레퍼런스를 잘 찾아보고 하자. 이제 조금 볼만하구나.
- 타도코코아CppStudy/0728 . . . . 2 matches
* 폴리모피즘, 가상함수, 템플릿 발표
== 가상함수와 다형성 예제 ==
- 토이/메일주소셀렉터/김정현 . . . . 2 matches
//메인클래스
// 파일처리 클래스
- 튜터링/2013/Assembly . . . . 2 matches
* 재귀함수에 관해 써보고, n!을 재귀함수로 작성할 때 무엇을 고민해야하는지 써보자.
- 프로그래밍십계명 . . . . 2 matches
6. 함수 안에서 매개 변수값은 결코 믿지 말지어다.
*컴파일러의 경고는 모두 켜 두어라. 경고는 곧 오류이니라. 오류를 알리는 함수의 결과를 확인하지 않는 우를 범하지 말지어다. 모든 파일 입출력과 모든 메모리 할당은 조만간 실패할 것이라.
- 프로그래밍잔치/첫째날 . . . . 2 matches
* Java 은 메소드(함수, 프로시저)의 길이가 7줄을 넘으면 안된다. ; 기준
* Python 은 메소드(함수, 프로시저)의 길이가 7줄을 넘으면 안된다. line 기준
- 후기 . . . . 2 matches
함수형 언어 Haskell을 배우는 시간을 많이 가졌는데 참 재미있었다. 더욱 재미있는 것은 함수형 언어의 좋은 점이 다른 언어에도 녹아들 수 있다는 것이다. 수학에서 출발하는 개념이 실제로 쓰이도록 중간에서 다리 역할을 하고 있다. 수학이 프로그램 언어에 미치는 영향력을 볼 때 학부 때 컴퓨터 공학 대신에 수학을 전공해도 좋을 것 같다. 그게 안 된다면 대안언어축제라도 참가하면서 [성장]할 수 있어야 한다.
- 05학번만의C++Study/숙제제출1/조현태 . . . . 1 match
책은 아직 안샀고, 답은 함수를 추가했음 - [조현태]
- 1thPCinCAUCSE/ExtremePair전략 . . . . 1 match
* 저희 {{{~cpp Extreme Pair}}} 팀은 어떤 문제든 우선 소스를 기본적으로 밑에 형태로 시작했습니다. 그래서 입력과 출력이나 진행에는 전혀 신경 쓰지 않고 문제를 푸는 알고리즘(process() 함수 부분)에만 집중할 수 있었습니다.
- 2학기파이선스터디/문자열 . . . . 1 match
5. 멤버십 데스트(Membership Test) = in
- 3DAlca . . . . 1 match
|| 7.28 || 판이 움직일때 공이 맞으면 그 방향으로 속도 증가, 종단 속도 개념 추가, 벽돌을 쉽게 추가 하는 함수 생성, 벽돌과 공의 충돌 처리(60%정도, 약간의 버그가 있음) ||
- 3DGraphicsFoundation . . . . 1 match
* 수학함수 모듈 인터페이스 예제 - C style : ["3DGraphicsFoundation/MathLibraryTemplateExample"]
- APlusProject/PMPL . . . . 1 match
기본 설계서 순서를 바꿔야 할 듯. 보통 유즈 케이스 -> 시퀀스 -> 클래스 식으로 발전. --재동
- BasicJAVA2005 . . . . 1 match
- 그 파일에 public static void main(String[] args) 함수가 없어서 그런거 같은데... --선호
- Basic알고리즘/63빌딩 . . . . 1 match
코딩. 랜덤함수로 1 ~ 64 중의 수를 정한 다음, 자신의 방법을 통해서 찾아보자!
- Boost . . . . 1 match
* ["Boost/SmartPointer"] : Boost 에서 제공되는 스마트 포인터 사용 방법
- BusSimulation/영창 . . . . 1 match
구현특이사항 : vector, map, algorithm 등 stl 클래스 사용
- ComposedMethod . . . . 1 match
메세지를 보내는 데에는 시간이 걸린다. 즉 함수 호출에는 오버헤드가 뒤따른다. 그러므로 최고의 속도를 내려면 하나의 메소드에 모든걸 때려넣을 수도 있다. 하지만? 댓가는 클것이다.(인력낭비, 비구조적 프로그램 양산)
- DataStructure/Tree . . . . 1 match
// 트리에 관한 함수들
- EightQueenProblemDiscussion . . . . 1 match
직접 다시 새로 시작하는 것에 대해서는 비교계산을 내리기 힘들것 같네요. (더 좋은 디자인을 얻어내는 것과 훈련라는 점에서는 물론 저도 추천) 제가 잘못했다고 생각되는 부분은, 퀸을 배열하는 방법 알고리즘 부분에 대해 TestDrivenDevelopment 를 지키지 못했다는 점이죠. (머릿속에 먼저 재귀함수 호출 등의 특정 알고리즘들이 먼저 떠오른지라. )
- FifteenSecondsRule . . . . 1 match
어떤 시스템/프로그램이 있을 때, 모든 개념적 단위(예컨대 패키지, 모듈, 클래스, 메쏘드 등)를 개발자 자신이 15초 이내에 설명할 수 있어야 한다는 "15초 룰"의 확장판이 꽤 유용할 때가 많습니다. 이런 식으로 설명을 모두 마쳤을 때는 소스 코드 전부를 설명한 셈이어야 합니다.
- HelpOnConfiguration . . . . 1 match
/!\ wiki.php에 정의되어 있는 WikiDB 클래스를 보면, 우선 하드코딩된 기본 설정이 있고, config.php에서 읽은 설정 사항을 그 위에 덧씌우는 방식이다.
- JAVAStudy_2002/진행상황 . . . . 1 match
c같이 하믄 쉬울 텐데.. 무신 클래스들이 이렇게 많은지.. --;;[[BR]]
- Java Study2003/첫번째과제/방선희 . . . . 1 match
* C 언어의 포인터처럼 메모리를 직접 access할 수 없다.
- Java/스레드재사용 . . . . 1 match
만약 그러면.. 무한루프때메.. wait..어쩌구 함수에 도달 못해서.. '도달할수없는 문장' 이라는 에러가 나는것이 아닐까..??? (._.);
- JavaStudy2002/입출력관련문제 . . . . 1 match
* 여러분이 어려워하시는것 같아, 입력 부분을 만들었습니다. 해당 static method의 기능은 한줄을 읽고, 공백이나, 탭을 기준으로 배열을 반환합니다. 사용 방법은 해당 함수의 main 을 참고하시고, 다른 소스에서 import해서 그냥 사용하세요. --["neocoin"]
- JavaStudy2003/두번째수업 . . . . 1 match
* 클래스정의 및 인스턴스(객체) 생성
- JavaStudy2003/세번째과제/곽세환 . . . . 1 match
= 클래스정의 및 인스턴스(객체) 생성 (예제1 + 예제2) =
- JavaStudy2004/이용재 . . . . 1 match
함수명이나 변수명을 지을 때 mynameis같이 쓰면 나중에 보거나 딴 사람이 보았을 때 이해하기가 힘들 수 있으니 myNameIs나 my_name_is처럼 각 단어끼리 구분 짓는 습관을 갖는 것이 좋다고 생각합니다. --[강희경]
- JollyJumpers/김태진 . . . . 1 match
//두개의 값사이의 차를 B함수에 넣음.
- Linux/필수명령어/용법 . . . . 1 match
일반적으로 echo 명령은 프롬프트 상에서 사용되는 일은 없다. 하지만 스크립트 작성시 번번히 사용된다. 셸 스크립트 상에서 echo 명령은 BASIC의 PRINT 명령이나 C 언어의 printf() 함수와 같이 메시지를 출력하는 데에 자주 사용된다. 또한 전혀 필요없을 것 같은 echo의 -n 옵션도 스크립트 상에서는 유용하게 사용될 수 있다.
- ModelViewPresenter . . . . 1 match
MVP 는 실제로 3개의 클래스가 더 있다. 요약하면
- ModelingSimulationClass_Exam2006_1 . . . . 1 match
2) 부족한 시간, 랜덤함수를 사용할 수 없는 상황이라는 점을 말하고, TD 의 기대치를 구했다. 대충 구해보니 7.55 분가량이 소요된다는 사실을 알았다. (좌우 대칭형으로 가정했기 때문에... -_-) 따라서 한 패거리의 실기 시험합격자의 최대 인원은 40명 소요되는 시간은 총 5시간이지만 SQMS 모델이 큐잉에서 최대의 효율을 발휘 할 수 있으므로, 양쪽의 서버에 반씩을 나누어서 시험을 보면 2시간 반가량이 필요하다고 판단. 필기가 종료되는 시간은 10:00 + 2:30. 14:00 + 2:30 따라서 당일의 시험이 완전히 종료되는 17:00 분 안에 시험을 끝낼 수 있기 때문에 해당 모델은 안정하다고 적긴적었다. -_-;;
- OurMajorLangIsCAndCPlusPlus/string.h . . . . 1 match
== 함수 (Functions) ==
- PairSynchronization . . . . 1 match
상민이랑 ProjectPrometheus 를 하면서 CrcCard 세션을 했을때는 CrcCard 에서의 각 클래스들을 화이트보드에 붙였었죠. 그리고 화이트보드에 선을 그으면서 일종의 Collaboration Diagram 처럼 이용하기도 했었습니다. 서로 대화하기 편한 방법을 찾아내는 것이 좋으리라 생각.~ --["1002"]
- Postech/QualityEntranceExam06 . . . . 1 match
3. Machine Language Like 한 프로그램 만들기. 코드 주고. 스앞 함수 호출하는 부분 있고 파라미터 패싱을 설명해야함.
- ProgrammingLanguageClass . . . . 1 match
아쉬운 부분은 프로그램 언어론이란 과목임에도 불구하고, 설명의 비중은 많이 쓰이는 언어일수록 높았던 점입니다. 함수형언어(FunctionalLanguage)는 기말 고사 바로 전 시간에 한 시간만에 끝내려다가, 그나마 끝내지도 못하고 요약 부분만 훑었습니다. 그 밖의 종류에 대해서는 거의 절차적 언어, 특히 C계열 언어를 설명하다가 부연 설명으로 나오는 경우가 많았습니다. 논리형언어(LogicLanguage)에 대한 설명은 거의 못 봤습니다. 어차피 쓰지 않을 언어라고 생각해서일까요.--[Leonardong]
- ProjectPrometheus/CookBook . . . . 1 match
Python 에서의 string.urlencode 과 마찬가지로 GET,POST 로 넘기기 전 파라메터에 대해 URL Encoding 이 필요하다. URLEncoder 라는 클래스를 이용하면 된다.
- ProjectTriunity . . . . 1 match
|| Upload:ExternalSort_PM_2.zip || 신재동 || 다단계 합병 초기 런 분배시 피보나치 수 계산 함수 ||
- RandomWalk2/Vector로2차원동적배열만들기 . . . . 1 match
위의 방법 외에도 클래스로 감싸주고, 내부적으로는 1차원 배열을 쓰는 방법이 있겠죠. row*width+col로 특정 원소를 레퍼런스할 수 있습니다.
- ReleaseDebugBuildStartGo의관계 . . . . 1 match
-복사생성자에서 멤버 간 대입(member-wise assignment)를 잘 하는가?
- Ruby/2011년스터디/강성현 . . . . 1 match
* 만들어진 json parser를 이용하여 각 api의 입/출력을 처리할 수 있는 함수 작성
- RubyLanguage/InputOutput . . . . 1 match
* IO클래스
- Self-describingSequence/1002 . . . . 1 match
binary search 로 바꾸고 나서도 역시 오래걸림. 다른 검색법에 대해서 생각하던 중, findGroupIdx 함수 호출을 할때를 생각.
- Slurpys/문보창 . . . . 1 match
힘들게 버그를 잡고 통과. 재귀함수 사용시 여러가지 통로(?)를 잘 관리해 줘야한다.
- SoftwareEngineeringClass . . . . 1 match
하지만 역할별, 작업별로 만드는 계획서와 보고서에 쏟는 시간이 너무 많다는 생각은 저 뿐만이 아닐 것입니다. 심사시에는 계획서에서 언급하지 않은 활동을 실행했다고 딴지를 걸 정도로, 계획서대로 실행된 내용을 변경없이 실행하는 것이 프로젝트의 반복가능성을 평가하는 기준인것 같습니다. 설계와 구현 사이에서 계획대로 실행 안되는 부분을 극단적으로 느꼈는데, 예를 들어 클래스 다이어그램과 시퀀스 다이어그램이 [Refactoring]과 같은 코드 재구성 작업을 할 때마다 바뀌어야 했습니다. 다이어그램이 코드로 매칭되지 않기 때문에 코드를 바꿈은 물론 다이어그램을 바꾸는 이중의 수고를 겪어야 했습니다. :( --[Leonardong]
- SpiralArray/영동 . . . . 1 match
* 제대해서 처음으로 숙제를 제외하고 처음 짠 ToyProblem입니다. 1학년 때 프로그래밍잔치에서 못 짰던 걸 이제야 짰네요. 우선 소요시간으로 미루어 볼때 제대하고 나서 머리가 굳었다는 걸 느낄 수 있었고, 그만큼 처음부터 막 짜지 말고 설계 및 구상을 잘 해야겠다고 생각했습니다. 또한 객체지향으로 짠 것도 아니고 변수, 함수를 너무 지저분하게 쓴 거 같기도 하고... 반성할 점이 참 많았습니다. 그리고 일단 배열 크기도 미리 정했고 시작점도 0, 0으로 가정하고 해서 사용자의 잘 못된 입력에 대응하지 않은 점도 미비했네요.
- StudyingFundamentalsOfTcpIp . . . . 1 match
* 일정 분량을 공부하고 멤버들끼리 질답을 갖는 시간을 정기적으로 갖을 것입니다.
- SuperMarket . . . . 1 match
1. 클래스를 이용 (좀 더 체계적으로)
- TheWarOfGenesis2R/ToDo . . . . 1 match
* (V) 게임루틴과 출력루틴의 클래스 구분
- TheWarOfGenesis2R/일지 . . . . 1 match
* 리팩토링의 위대함을 계속 느껴 버렸다. Extract Method는 기본이고, 상위 클래스로 올리기, 등등 이것저것 하니까 매우 간단해지는 것을 느꼈다.
- VisualStudio2005 . . . . 1 match
C# 자동으로 클래스 다이어 그램 그려주네요. 테스트 케이스 작성은 아직 못 해봤음. -_-
- VonNeumannAirport . . . . 1 match
-> 이에 따라 Input 부분이 바뀌고, Input 부분이 클래스와 합쳐진 코드의 경우 더더욱 골치.
- XMLStudy_2002/Encoding . . . . 1 match
*Unicode와 XML등과 같은 Markup Language 등에 대해 W3C와 Unicode.org 멤버들이 작성한 Technical Report : [http://www.w3.org/TR/1999/WD-unicode-xml-19990928/]
- XpWeek/20041224 . . . . 1 match
사실 네트워크에 대한 MockObjects는 어렵지 않았던 것 같아. JUnit에서 제공하는 MockObject클래스를 소켓에 써먹는 방법에 집착한 나머지 포기하지 않았을까? 단순히 서버와 클라이언트 흉내만 내면 될텐데...
- [Lovely]boy^_^/ExtremeAlgorithmStudy/MathematicalFoundations . . . . 1 match
* 집합, 함수, 그래프, 트리
- eXtensibleMarkupLanguage . . . . 1 match
* [http://www.joon.pe.kr/blog/250 php로 xml 생성 클래스(예제포함)]
- erunc0/Mobile . . . . 1 match
* gx library 에서 제공해주는 몇안되는 함수를 이용하여. pda 화면에 대한 pointer를 얻어와 삽질해서 뿌린다. dx 할때랑 똑같음.
- lostship . . . . 1 match
|| ["Boost/SmartPointer"] || 스마트 포인터 쓰기 ||
- matlab . . . . 1 match
- 일단 classdef 로 클래스를 작성.
- pragma . . . . 1 match
C 와 C++ 을 구현한 각각의 컴파일러에는 포팅된 하드웨어나 OS 에 의존적인 몇몇가지들의 기능을 가지고 있다. 일례로 몇몇의 프로그램들은 메모리에 데이터가 어떠한 방식으로 자리잡을 것인지 에 관한 문제나 함수가 파라미터들을 조작하는 방법들에 대한 세밀한 조작이 요구된다. #pragma 지시어들은 C 와 C++ 언어 안에서 최소한의 호환성을 유지시키며 그러한 시스템 의존적인 명령어들을 언어의 기능으로서 포함시키는 일을 한다. Pragma 지시어들은 일반적으로 '''컴파일러들 마다 서로 다르다'''.
- zennith/source . . . . 1 match
이 컴비네이션 함수.. 제대로 푼건지 확신이 안가는군요. 6c3 같은거로 테스트 해보면 제대로 돌아가는 거 같은데요.
- 고한종/on-off를조절할수있는코드 . . . . 1 match
//이 부분은 scanf_s("%c",&keyOnOff);로도 쓸 수 있지만 scanf_s와 scanf의 차이도 잘 모르고 scanf는 사실 매우 어려운 함수;
- 데블스캠프2004/세미나주제 . . . . 1 match
[STL]을 할때 단순히 자료구조를 사용하는 방법을 같이 보는것도 중요하겠지만 내부구조 (예를 들어, vector는 동적 배열, list은 (doubly?) linked list..)와 같이 쓰이는 함수(sort나 또 뭐가있드라..그 섞는것..; ), 반복자(Iterator)에 대한 개념 등등도 같이 보고 더불어 VC++6에 내장된 STL이 ''표준 STL이 아니라는 것''도 같이 말씀해 주셨으면;; (SeeAlso [http://www.stlport.org/ STLPort]) - [임인택]
- 데블스캠프2005/RUR-PLE/Harvest . . . . 1 match
#오른쪽 함수
- 데블스캠프2006/목요일후기 . . . . 1 match
마지막 아날로그 시계는.. 사각형, 원, 선 그리기를 RAND 함수로 하겠다고 했다가 시간을 너무 소비해버려서 구현하지 못했지만
- 데블스캠프2006/월요일/함수/문제풀이/이차형 . . . . 1 match
함수만들기
- 데블스캠프2009/목요일/연습문제/MFC/서민관 . . . . 1 match
뭔가 찜찜한 계산기. 구조상 *와 / 연산이 불가능하다... 또한 추가 함수를 만들지 않아서 버튼 구조를 똑같은 것을 9번 반복
- 데블스캠프2010/다섯째날/ObjectCraft/미션3/김상호 . . . . 1 match
== 메인함수 ==
- 데블스캠프2011/둘째날/후기 . . . . 1 match
* 씐나는 Cheat-Engine Tutorial이군요. Off-Line Game들 할때 이용했던 T-Search, Game-Hack, Cheat-O-Matic 과 함께 잘 사용해보았던 Cheat-Engine입니다. 튜토리얼이 있는지는 몰랐네요. 포인터를 이용한 메모리를 바꾸는 보안도 찾을수 있는 대단한 성능이 숨겨져있었는지 몰랐습니다. 감격 감격. 문명5할때 문명 5에서는 값을 *100 + 난수로 해놔서 찾기 어려웠는데 참. 이제 튜토리얼을 통해 어떤 숨겨진 값들도 다 찾을 수 있을것 같습니다. 그리고 보여주고 준비해왔던 얘제들을 통해 보안이 얼마나 중요한지 알게되었습니다. 보안에 대해 많은걸 생각하게 해주네요. 유익한시간이었습니다. 다음에 관련 책이 있다면 한번 읽어볼 생각이 드네요.
- 만년달력/강희경,Leonardong . . . . 1 match
int deter_date(int year, int month )//요일을 정하는 함수(0은 일요일, 6은 토요일)
- 문자반대출력/최경현 . . . . 1 match
[문보창]선배님의 process_wchar() 함수를 빌려다 썼다.
- 문제풀이/1회 . . . . 1 match
이런 경우를 개선하기 위해서 map 함수가 있는것입니다. 이를 Haskell에서 차용해와 문법에 내장시키고 있는 것이 List Comprehension 이고 차후 [http://www.python.org/peps/pep-0289.html Genrator Expression]으로 확장될 예정입니다. 그리고 print 와 ,혼용은 그리 추천하지 않습니다. print를 여러번 호출하는것과 동일한 효과라서, 좋은 컴퓨터에서도 눈에 뜨일만큼 처리 속도가 늦습니다. --NeoCoin
- 반복문자열 . . . . 1 match
* 함수를 만든다.
- 새싹교실/2012/앞부분만본반 . . . . 1 match
5. printf 함수의 기본적인 이해
- 새싹교실/2013/양반/3회차 . . . . 1 match
함수호출
- 새싹교실/2013/책상운반 . . . . 1 match
* 왜 함수들의 마지막은 return 0;로 끝나는 지, 또 어떻게 쓰는지
- 송치완 . . . . 1 match
* ~~ProjectD의 멤버~~ 현재 탈주상태
- 수 . . . . 1 match
기본 함수들을 설명하기 위한 예제니까요. :)
- 수학의정석/집합의연산/조현태 . . . . 1 match
또한 오버헤드를 줄인다는 명목하에 함수로 나누지도 않았따. (귀차니즘.ㅎ)
- 숫자야구/ 변준원 . . . . 1 match
#include <iostream> // 랜덤함수는 iostream에 포함되어 있습니다.
- 위키설명회2005/PPT준비 . . . . 1 match
용도 : 자산관리, 프로젝트 멤버 주소록, *공유팁, 프로젝트 세팅방법
- 정모/2003.8.26 . . . . 1 match
* [JavaStudy2003] => 진행중, 멤버가 많이 빠짐.
- 조영준 . . . . 1 match
* 동네팀 멤버
- 조재화 . . . . 1 match
* www.msdn.com 라이브러리와 함수... 등등의정보를 알 수 있다.
- 지도분류 . . . . 1 match
||["Scheme"]|| MIT에서 가르치는, 함수형 프로그래밍 언어이다 ||
- 창섭/삽질 . . . . 1 match
* 이상하게 함수가 작동을 안하거든 기본적으로 parameter 갯수와 reference 여부를 확인하자.
- 콤비반장의메모 . . . . 1 match
''사용자가 한번 플레이 했다는 걸 미디어에 직접 기록하는 방법으로는 디지털 워터마킹이 있습니다. 이 방법은 네트워킹 없이도 문제를 해결할 수 있는 방법입니다만 전문적 지식이 필요합니다. 네트워크로 확인하는 가장 쉬운 방법은 클라이언트는 재생시 마다 서버에서 인증을 받고, 서버측에서는 미디어의 아이디를 확인하고 재생횟수를 저장하는 방법이 아닐까 싶습니다. 미디어의 아이디 생성은 MD5 같은 해쉬함수 정도면 충분 할것 같습니다. --["데기"]''
- 큐와 스택/문원명 . . . . 1 match
// 이코드 때문입니다. 배열상의 모든 char 포인터가 결국 같은 곳을 가리키게 됩니다.
- 파스칼삼각형/김남훈 . . . . 1 match
문제는 내가 scheme 시스템에서 stdin stdout 을 어떻게 다루는지 몰라서 그냥 함수만 만들었다는 점.
- 파스칼삼각형/김태훈zyint . . . . 1 match
함수가 멋지게 안나오는.. 이런 훌륭한녀석~!!
- 프로그래밍언어와학습 . . . . 1 match
* 학교에서 C++ 배운다고 하드웨어 건드리나. -_-; (전전공이라면 몰라도..) 컴퓨터공학과의 경우 학교에서 C++ 배워도 어셈블러 레벨까지 다루는 사람이 별로 없다고 할때, C++ 을 배웠다고 시스템레벨 까지의 깊은 이해가 필요없었다는 점인데.. 글을 읽으면, 마치 '교육용 언어로 C, C++ 을 배웠다면 시스템 레벨까지 이해할 것' 처럼 쓴 것 같다고 생각. (C, C++ 포인터를 레퍼런스 이상의 개념으로 쓴적이 있었나.. --a) 차라리 '우리는 전전공 출신에 하드웨어제어 해본 사람 뽑습니다' 라고 할것이지..쩝. Domain-Specific 한 부분을 생각치 않고서는 시스템 프로그래머에게서는 늘 자바와 Script Language 는 '군인을 나약하게 만드는 무기' 일 수밖에 없으니까.
- 프로그래밍잔치/첫째날후기 . . . . 1 match
사람들은 서로가 고른 언어로 만든 Hello World, 구구단 을 시연하면서 각자의 개발환경, 프로그래밍 방법 등을 보여주었다. 그리고 JuNe 은 중간에 Smalltalk (Squeak)의 OOP 적인 특성, Scheme, Haskell 의 함수형 언어 페러다임에 대해 보충 설명을 했다.
- 허아영 . . . . 1 match
[http://blog.naver.com/ourilove.do?Redirect=Log&logNo=100003444965 포인터공부]
- 현종이 . . . . 1 match
class SungJuk //클래스를 선언합니다.
Found 240 matching pages out of 7557 total pages (1260 pages are searched)
You can also click here to search title.