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년 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개월 칠판에 낙서하면서 나름 가르치다보니까 제 자신에게 도움이 되었던건 둘째치고

교수님들이 참여도 낮다고 맨날 학생들한테 뭐라고 하는 그 심정이 많이 이해가 갑니다.

 

2010년 5월 9일 일요일

천안-함

2ch, 4chan, cnn, 어디를 다 둘러봐도

침수설밖에 안돌고 있고 진상규명이 왜 한달이나 걸리는지 이해를 못하는 실정이던데

다들 한국에 선거가 끝나면 그때부터 진상규명이 될 거라고 예상을 하고 있음.



별로 블로그에 정치적 견해를 밝히고 어떻고 할 생각은 없지만

침수설을 내놓으면 빨갱이 취급을 받고 있는게 지금 세상인데





순직자들을 정치적으로 이용해 먹는 사태를 보고 있으니 열이 받습니다.

난 해군 입대한 친구들 천안함 사건 터질때 걱정해서 조마조마하고 있었단 말이다....

2010년 4월 24일 토요일

드럼매니아 V7!

 

글이 길고 사진이 많습니다.

2010년 4월 19일 월요일

인터넷 커뮤니티에서 보기 싫은글들

프로그래밍 커뮤니티 아닌데 C나 C++한다고 유세떨지마라

 

왜 꼭 프로그래밍하는 애들이 다른 커뮤니티 가서 쓸데없이 C소스 올리고 잘난체하지?

 

쪽팔리고 한심하고 여튼 그럼

 

질문도 하지마라

 

아무리 커뮤니티 자유게시판이 자유로운 글 올리자는 취지긴 하지만 왜 질문하기 더 좋은 곳 놔두고 취지 엇글러진 곳에서 자기 프로그래밍 공부합니다 이거 어렵습니다 유세 떨고 싶어서 환장을 했냐

 

볼때마다 짜증남