1) 컴퍼넌트란(component)
끼워서 사용할 수 있는 클래스(개체)를 뜻함 = 재사용 가능한 소프트 웨어
2) 컴퍼넌트들만 따로 만들어서 ~.DLL(어셈블리)파일로 만들어서
다른 소프트웨어에서 사용할 수 있도록 제작할 수 있다.
M | C | V | ||||
-> | LoginAction.CS (개체사용) | -> | ||||
클라이언트 | -> | 콘트롤러(요청종류검사) (요청을 처리할 Action개체) | -> | SendMsgAction.CS -> (개체사용) | -> | View(Form) |
-> | ~Action.CS (개체사용) |
※Stream(스트림)
개념
데이터의 흐름
스트림의 요소
출발지 ========> 목적지
(출력스트림)(입력스트림)
Write Stream|Read Stream
양방향 흐름
출발지 ========> 목적지
목적지 <======== 출발지
스트림 클래스
StreamWriter : 출력스트림
StreamReader : 입력스트림
출발지 ========> 목적지
simpleNote -> document.txt
StreamWriter sw = new StreamWriter("저장경로");
sw.writer("저장할 내용");
목적지 <======== 출발지
simpleNote <- document.txt
StreamReader sw = new StreamReader("읽기경로");
sw.ReadToEnd();
속성(property)
필드와 속성의 관계
속성은 은닉화된 필드값을 설정하고 있는 역할
속성의 값은 필드값과 반드시 일치하지 않는다.※
속성은 필드값을 가공하고 값의 유효성을 체크할 수 있다.(데이터의 안정화)※
속성의 작성법
private int age;
public int Age{ //대문자
get{ [return문] } //읽기
set{ age=values; } //쓰기
}
속성 사용법
읽기
int x = 변수.Age; //get 블럭이 실행
쓰기
변수.Age = 10; //set 블럭이 실행
스택 | 힙 |
values | 값/값/값 |
키값 | 키값 | 키값 |
개체 | 개체 | 개체 |
SWIG 란 C/C++ 의 코드를 다른언어에서 사용가능하도록 만들어주는 프로그램이다.
SWIG란 프로그램을 사용함으로써 기존 C/C++ 코드를 새로운 언어로 포팅할 필요가
없으며 속도에 민감한 프로그래밍을 할때 유용하다. 그리고 마지막으로 Perl 같은
스크립트 언어 작성시 코드를 감추면서 프로그래밍을 할수 있다는 장점이 있다.
지원운영체제및 언어는 아래와 같다.
Tcl 8.0 and newer versions.
Python 1.5 and newer.
Perl 5.003 or newer.
Guile 1.3.4 and newer.
Java JDK 1.1 and newer.
Ruby.
Mzscheme.
PHP
Objective Caml (Ocaml)
Support for C# and the Chicken scheme
Unix
Microsoft Windows
Macintosh
최종 현재 1.3.29 까지 나왔다.
* SWIG 홈페이지 Http://www.swig.org
NameSpace
목적
클래스 구조체 인터페이스 열거형등을 기능별로 묶어 관리하기 위해서
쉽게 찾기 위해서
소유회사에 대한 정보를 표시하기 위하여
작성법
네임스페이스명 {.....}
작명법
첫문자는 대문자가 관례
설계회사의 URL의 역방향으로 지어주는게 관례
http://www.samsung.com
com.samsung
TV
TV1.CS
TV2.CS
멤버
네임스페이스명
{
.....
[타입정의형]
열거형
클래스
구조체
인터페이스
대리자
네임스페이스
....
}
계층표시
com{ //네임스페이스명
samsung{ //네임스페이스명
....
}
}
//동일표현으로..
com.samsung{
....
}
**시험문제 주관식
접근 제한자(액세스 한정자/Access Modifier)
(public/*internal) class 클래스명
{
(public/internal/*private/protected) void Main()
{
......
}
}
//public : 모든 설계도상에서 사용가능
//internal : 한정자의 역할, 같은 어셈블리(프로젝트) 내에서만 사용가능
//private : 한정자의 역할, 해당 타입내에서만 사용가능
다른 솔루션의 개체를 사용하기 위해서는 참조에서 해당 폴더 bin의 솔루션명.exe파일을 추가하면 사용할 수 있다..
필드/메소드
종류
인스턴스/정적
인스턴스(필드/메소드):반드시 개체를 만들어서 사용해야함
(개체별로 따로 갖고 있음)
ex. Car myCar = new Car();
myCar.Sound();
정적(static)(필드/메소드): 클래스 이름으로 사용해야함
(데이터 영역에 한번 만들어짐)
ex. Console.WriteLine();
클래스명.정적메소드
코드영역 | 데이터영역 | 스택영역 | 힙영역 |
기계어 명령 | 정적데이터,Console.WriteLine | 지역변수(값형,참조형) | Car개체 Sound() |
값비교
< > == !=
문자열비교(스트링형은 참조형이지만 예외)
== !=
주소번지비교(참조형의 경우)
== !=
if (x>3 & y<10) => 거짓 & (?) => 거짓
if (x>3 && y<10) => 거짓 && (?) => 거짓 <= 더빠름
if (x>3 | y<10) => 참 | (?) => 참
if (x>3 || y<10) => 참 || (?) => 참 <= 더빠름
한개짜리는 비트연산도 가능하므로 나름 유용
클래스명 | | | |
인터페이스명 | | | |
배열명 | | 변수 | = 개체 |
델리게이트명 | | | |
클래스명 | | |
object 변수 = 개체;
(클래스)(참조형변수)
string 변수 = 개체;
int32 변수 = 개체;
(구조체)
console.writeline의 비밀
int a=100;
console.writeline(a.tostring()); //100이 아니라 자동으로 "100"으로 찍음..
console.writeline(a.tostring()); //"100"
a는 개체
형변환
자동 형변환이 되는 경우
값형
(큰 사이즈 데이터형 = 작은 사이즈 데이터형) & (호환가능형)
참조형
부모 클래스형 = 자식 클래스형
수동 형변환
값형
작은 사이즈 데이타형 = (작은 데이터형) 큰 사이즈 데이터형
0 1 2 3
x x x O
로 취하므로 값 손실이 생길 수 있다.
int i = f (x)
int i = (int) f (O)
참조형
자식 설계도형 = (자식설계도) 부모 설계도형
자식설계도로부터 생성된 개체만??
A
/\
B C
B b = new B();
A a = b;
B c = (B)a;//(O) //C c = (C)a;//(X)
System.Int32 - 메소드 - parse(string)
public static int parse(string) //static이 있으면 개체생성없이도 사용가능
※static이 붙은 메소드 호출방법
클래스명|
구조체명|.메소드명(...)
int x = int32.parse("300");
= int.parse("300");
0+100=100
null+100=null