SPECTATOR
오늘의 날씨는 꼬리털 슝슝
2011년 2월 13일 일요일
파이썬 자료형 T/F
2011년 1월 31일 월요일
Visual Studio 10.0 (2010), Python 2.7.1 사용환경에서 패키지 설치시 오류 사항
Python 정리
명령 프롬프트에서 ( prompt $G )
2010년 10월 27일 수요일
C# 공부한거 정리 #2
Collection
IEnumerable
IEnumerator - 내부 데이터 접근 Interface (Iterator)
-- Current
-- MoveNext()
-- Reset()
ICollection
-- int Count - 객체 수
-- bool IsSynchronized - 접근 동기화
-- object SyncRoot - 스레드에서의 동기화 객체 반환
-- void CopyTo - Collection -> Array
IList Property
- IsFixedSize - 고정 길이 리스트 체크
- IsReadOnly - 읽기전용 체크
- this[index] - 인덱서
IList Method
- Add(object) - 추가
- Clear() - 싹다제거
- Contains(object) - 존재 체크
- Indexof(object) - 위치반환
- Insert(index, object) - 데이터 삽입
- Remove(object) - 객체 제거
- Remove(index) - 그 위치 객체 제거
IDictionary Property
- IsFixedSize
- IsReadOnly
- Keys - 키 전부 나열 - 키는 유일해야 한다
- Values - 값 전부 나열
IDictionary Method (e.g. Hashtable)
- Add(key, value)
- Clear
- Contains(key) - 연관성 검사
- GetEnumerator() - 나열을 위해 인터페이스 반환
- Remove(key) - 키로 지움
IDictionaryEnumerator Property
- DictionaryEntry - 키, 값 반환
- object Key - 키 반환
- object Vaule - 값 반환
대표적 Collection
- ArrayList - vector
- Hashtable - map ( object, value )
- SortedList - key기준 정렬, key검색활용
- Queue - Enquere(), Dequeue()활용
- Stack
- NameValueCollection
---- System.Collections.Specialized
---- String, String 형 맵
Generic
- 초기의 C# : Object의 Upcasting을 활용하여 제너릭이 필요가 없었다.
- 제너릭 도입 이유 : 형식 안정성, Object : 캐스팅 낭비 없앰, Value : Boxing/UnBoxing 부하가 없음
Collection의 Generic변환
ArrayList -> List<T>
Hashtable -> Dictionary<T>
SortedList -> SortedDictionary<T>, SortedDictionary<K, V>
Stack -> Stack<T>
Queue -> Queue<T>
Exception
finally : 예외처리 여부와 상관없이 무조건 실행되는 문장
Stream
- I/O stream
- File stream
---- File, Directory - static ( 객체 생성할수 없다 )
---- FileInfo, DirectoryInfo - 객체 생성 활용 가능
FileInfo fi = new FileInfo(@"c:\test\a.txt"");
fi.CopyTo(@"c:\test\b.txt\");
File Class (public sealed class ), using System.IO
File.Copy(src, dest, overwritted여부(true/false))
bool exist = File.Exists(src);
DateTime dt = File.GetCreationTime(src);
- File Class
OpenRead(src);
OpenText(src);
OpenWrite(src); 등등
접근 방식
StreamReader r = new StreamReader (fs, System.Text.Encoding.Default); // 문자스트림 변환
r.BaseStream.Seek(0, SeekOrigin.Begin); // 커서 위치를 첫부분으로
r.Peek() == -1 // EOF check
r.ReadLine() -> 파일스트림에서 Line단위 읽기
r.Write(byte[], 0, byte[].Length)
r.Flush();
r.Close() -> 스트림 닫기
SeekOrigin 열거형 상수 - Begin, Current, End
- Directory Class
디랙터리 생성, 이동, 삭제등을 위한 Class
- Path class
파일 디렉토리 경로 확장, 변경 수정 클래스
- BuffedStream
Default : 4096 Bytes
- MemoryStream
메모리 대상 Stream
- BinaryReader, BinaryWriter
데이터 타입의 크기만큼 데이터를 저장 & 읽을때 사용하는 스트림 ( FileStream의 데이터 단위 스트림 )
- TextReader, TextWriter
문자 스트림 입출력관장 최상위 추상 클래스
- StringReader & StringWriter
public class StringReader : TextReader
public class StringWriter : TextWriter
- StreamReader & StreamWriter
ByteStream->CharacterStream
C# 공부한거 정리 #1
C/C++ 호환성을 위해 사용
pointer - unsafe, fixed
struct - stack에 memory allocation
Garbage Collector - heap 관리
Type
- Value type(Built-in type)
- Reference Type : Class Object
- readonly 추가 (const 비슷함)
전달법
- Call by Value (Value Copy)
- Call by Reference (ref, out)
Class 추가 기능
Access Identifer 추가
- internal
- protected internal
Property 추가 (set, get) - set 인자 value
sealed - 상속금지
Overriding-
-- new public void Method() 활용법
-- base : 상위접근
Polymorphism
-- abstract // overlide
-- Interface
-- Upcasting (객체의 묵시적 캐스팅)
Casting
-- Object 형? - 모든 object가 가지는 최상위 class
-- Boxing : value -> ref 변환 // UnBoxing
Delegate
-- 활용? 함수포인터 // 쓰레드/이벤트 제어 --> 캡슐화
계약적 다형성 (Contract)
-- Interface활용 ( 빌더 패턴과 유사? )
배열 생성법
int[] name = new int [10];
배열 선언후에는 하나씩 할당하는 방법이외에 다른 방법은 없다.
int[] ref = ref2; (참조값이 할당됨 유의)
-- value array
-- object array - 메모리 할당 필요
다차원 배열
int[,] myarray = new int[4,3];
가변 배열 (Jagged Array)
int[][] jagarray = new int[3][]; // matrix 표현 불가능
jagarray[0] = new int[10]; 하부열 할당필요
배열의 property
Length, Rank(차원의 수)
배열 지원 함수 -> System.Array [ICloneable, IList, ICollection, IEnumerable]
복사 방법 Copy(), Clone() [ 일부, 전체 복사 ]
foreach
- Array, Collection에서 활용 ( foreach(int i in array)
- 읽기전용 / 검색전용 제어문 ( Iterator )
Indexer
public object this[int index]{ get{} set{} }
문자열
string - 수정 불가 -> 대체안 : StringBuilder - 문자열 조작의 cost time을 기하급수적으로 줄여준다.
C/C++ 차이점
묵시적 캐스팅 - 무조건 에러
if에 조건식이 없거나 true, false 결과값이 없다 - 무조건 에러
다중 상속 불가 - interface를 활용한 샛길
함수포인터 활용 - delegate
C++의 STL? -> System.Collections
C++의 RTTI? -> System.Reflaction
C++의 Console IO? -> System.Console
2010년 8월 19일 목요일
2010년 5월 19일 수요일
TML C++ 스터디 기획서
C++ Programming 스터디
스터디 참가 요건
1. C의 문법을 배웠다는 전제하에 수업을 진행한다.
2. memory 구조와 그 활용법에 대해서 어느 정도 알고 있다.
3. user defined function 을 제작할 수 있다.
4. 기본 data structure에 대해 알고 있다.
스터디 진행 방식
1주에 1번 강의를 가지고 그 후 자체적인 복습을 요구합니다.
OOP의 개념에 능숙해 지기 위하여 임의의 과제를 지속적으로 제시합니다.
1주차 강의 내용
- C++ 맛보기 (표준 입출력)
--- iostream
--- fstream
- C++ initialization
- namespace
- string class 활용
- inline function 활용
2주차 강의 내용
- Stack Frame, Heap memory 영역에 대한 이해
- reference
--- const reference
--- const pointer
- new, delete 활용
- function overloading
- MSDN 활용법
3주차 강의 내용
- Class
--- access 지시자
--- Constructor
----- Copy Constructor
--- Destructor
--- this
--- Static member variable
--- Static member function
4주차 강의 내용
- Class
--- const member
--- mutable
--- Inheritence
--- Containment, Nest
--- Virtual Function
----- abstract class (pure virtual function)
----- Virtual Destructor
5주차 강의 내용
- Class
--- friend
--- Operator Overloading (copy, assignment에 대해서만)
- Design Pattern 맛보기
- RTTI
- C++ Casting
6주차 강의 내용
- Template
--- Function Template
--- Class Template
- STL 기본
--- vector, map, pair...
--- iterator 활용
- Exception
7주차 강의 내용
- Type Conversion 규칙
- Operator overloading
- Visual Studio에서 프로젝트 설정 자유롭게 조작하기
- Header 파일 규칙
- Preprocesser
- 다중 소스+헤더 프로그램 작성
화이팅 이제 한 주 남았다.....
거저 2개월 칠판에 낙서하면서 나름 가르치다보니까 제 자신에게 도움이 되었던건 둘째치고
교수님들이 참여도 낮다고 맨날 학생들한테 뭐라고 하는 그 심정이 많이 이해가 갑니다.