Indexer
http://dis.dankook.ac.kr/lectures/hci09/entry/Indexer
Property (속성)
http://dis.dankook.ac.kr/lectures/hci09/entry/Property
Method overloading (메소드 오버로딩) Method overriding (메소드 오버라이딩)
http://dis.dankook.ac.kr/lectures/hci09/entry/Method-Overloading
Abstract Class (추상 클래스)
http://dis.dankook.ac.kr/lectures/hci09/entry/Abstract-class
Sealed Class (봉인 클래스)
http://dis.dankook.ac.kr/lectures/hci09/entry/Sealed-Class
OOP
Class (클래스) – defines the grouping of data and code, the “type” of an object (데이터와 코드의 그룹화, 개체의 “유형”을 정의)
Instance (인스턴스/객체) – a specific allocation of a class (클래스 객체의 특정 할당)
Message (메시지) – sent to objects to make them act (그들 행동을 하기위해 개체에 전송)
Method (메소드) – a “function” that an object knows how to perform (객체가 수행하는 방법을 알고있는 “함수”)
Instance Variables (인스턴스 변수) – a specific piece of data belonging to an object (객체에 속하는 데이터의 특정 부분)
Property (속성) – away to access instance variables and other attributes of an object (인스턴스 변수나 객체의 다른 속성에 접근하기위한 방법)
Encapsulation (캡슐화) – keep implementation private and seperate from interface (private하게 구현하고 인터페이스와는 별개로 유지)
Polymorphism (다형성) – different objects, same interface (다른 객체, 같은 인터페이스)
Inheritance (상속) – hierarchical organization. share code, customize or extend behaviors (계층적 조직, 코드의 공유, 사용자 정의 및 행동을 확장)
Person Class
Person 클래스
– class 정의 및 객체화 & instance variables, static variables, instance methods, static methods 사용 예제
C# Formatting Numeric String
http://dis.dankook.ac.kr/lectures/hci09/entry/C-String-Formatting
http://msdn.microsoft.com/en-us/library/s8s7t687(VS.80).aspx
Formatting Custom Numeric Format Strings
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
Formatting Numeric Format Strings (Alignment)
Integer http://www.csharp-examples.net/string-format-int/
Double http://www.csharp-examples.net/string-format-double/
DateTime http://www.csharp-examples.net/string-format-datetime/
Align String with Spaces http://www.csharp-examples.net/align-string-with-spaces/
Indent String with Spaces http://www.csharp-examples.net/indent-string-with-spaces/
IFormatProvider http://www.csharp-examples.net/iformatprovider-numbers/
Custom IFormatProvider http://www.csharp-examples.net/custom-iformatprovider/
Character | Description | Examples | Output |
C or c | Currency | Console.Write(“{0:C}”, 2.5); | $2.50 |
Console.Write(“{0:C}”, -2.5); | ($2.50) | ||
D or d | Decimal | Console.Write(“{0:D5}”, 25); | 25 |
E or e | Scientific | Console.Write(“{0:E}”, 250000); | 2.50E+05 |
F or f | Fixed-point | Console.Write(“{0:F2}”, 25); | 25 |
Console.Write(“{0:F0}”, 25); | 25 | ||
G or g | General | Console.Write(“{0:G}”, 2.5); | 2.5 |
N or n | Number | Console.Write(“{0:N}”, 2500000); | 2,500,000.00 |
X or x | Hexadecimal | Console.Write(“{0:X}”, 250); | FA |
Console.Write(“{0:X}”, 0xffff); |
C# Array/ArrayList
// 만약 Person 객체를 하나만 생성한 후 for문에서 공유해 사용할 경우
// 마지막으로 입력된 데이터로 모든 데이터값이 치환됨
Person p = new Person();
for (int i = 0; i < 5; i++) {
p.Name = Console.ReadLine(); // 입력정보
p.age = int.Parse(Console.ReadLine()); // 입력정보
pArray[i] = p; // 리스트에 들어간 모든 원소는 동일한 p
}
// 아래와 같이 for문 안에 Person p = new Person()와같이 새로운 객체를 생성해야
// 각자 다르게 입력된 정보가 들어가게 됨
for (int i = 0; i < 5; i++) {
Person p = new Person();
p.Name = Console.ReadLine(); // 입력정보
p.age = int.Parse(Console.ReadLine()); // 입력정보
pArray[i] = p; // 이때 p는 새로운 Person객체
}
http://dis.dankook.ac.kr/lectures/hci10/entry/C-ArrayList (ArrayList 사용예)
HW2
연습문제 (2)
□ 단원 : C# 기초 □ 목표 : C# 프로그램 기초 □ 주요 연습 내용 : array, ArrayList, 클래스, 속성 연습 □ 준비자료 : |
연습문제 Ex2 (Due by 10/12 금 24시까지)
-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex2.zip으로 묶어서 낼 것. 보고서 (30%)
[연습문제]
1. CurrencyExchange 클래스를 정의하라 (CurrencyExchange.cs 파일로 저장한다). (20%)
CurrencyExchange 클래스는 통화이름, 매매기준율, 살때, 팔때, 통화명을 데이터 멤버로 포함한다.
– private string hname;
– private double standard;
– private double buy;
– private double sell;
– private string sign;
각 멤버 필드에 대한 속성(Property)를 지정하여 외부에서 사용할 수 있도록 한다.
– public string HName { get; set;} // get과 set에 대한 내부정의 필요
– public double Standard { get; set;}
– public double Buy { get; set;}
– public double Sell { get; set;}
– public string Sign { get; set;}
그리고 메소드는 다음을 포함한다.
– public CurrencyExchange() // 기본 생성자
– public CurrencyExchange(string, double, double, double, string) // 생성자
– public virtual void Print() // CurrencyExchange 통화이름, 매매기준율, 팔때, 살때, 통화명을 출력
– public override string ToString() // Print와 동일하게 string으로 출력
2. TodayMoneyExchangeConverter 클래스 (TodayMoneyExchangeConverter.cs 파일로 저장한다)는 아래의 메소드를 포함한다. (40%)
– static ArrayList currencyList = new ArrayList();
– static CurrencyExchange currencyExchangeIn = null; // 정확한 환율변환계산을 위해서 환전하려는 입력된 통화의 환율시세가 필요함
– static CurrencyExchange currencyExchangeOut = null; // 정확한 환율변환계산을 위해서 출력되는 환전 통화의 환율시세가 필요함
– static double currencyAmountIn = 0.0; // 입력된 환전금액
– static string currencySignIn = null; // 입력된 환전통화
– static string currencyNameOut = null; // 환전하려는 통화국가명
– public void GetTodayCurrencyExchangeRates(); // currencyList에 데이터 저장하고 아래와 같이 출력한다. (Ex1에 PrintTodayCurrencyExchangeRates를 변형하여 웹에서 받은 모든 정보를 currencyList에 저장하고나서 화면에 출력한다 – foreach구문과 CurrencyExchange 클래스의 ToString() 을 사용할 것.)
미국 1112 1131.46 1092.54 USD
일본 1433.17 1458.25 1408.09 JPY
유럽연합 1438.48 1467.1 1409.86 EUR
중국 176.94 189.32 168.1 CNY
영국 1804.78 1840.69 1768.87 GBP
스위스 1189.3 1212.96 1165.64 CHF
캐나다 1135.85 1158.45 1113.25 CAD
호주 1162.04 1185.16 1138.92 AUD
뉴질랜드 927.52 945.97 909.07 NZD
……
– public void PrintTodayCurrencyExchangeStandardAmount(); // 아래와 같이 한국 1000원, 미국 1달러, 일본 100엔, 유로 1유로에 대한 매매기준율 환율시세로 변환한 금액을 출력한다.
한국(KRW) 미국(USD) 일본(JPY) 유럽(EUR)
한국(1000 KRW) 1000.0 0.8993 69.78 0.70
미국(1 USD) 1112.0 1.0000 77.59 0.77
일본(100 JPY) 1433.2 1.2888 100.00 1.00
유로(1 EUR) 1438.5 1.2936 100.37 1.00
– CurrencyExchange GetCurrencyExchangeByName(string name); // 통화국가명에서 currencyList로부터 CurrencyExchange객체를 받기
– CurrencyExchange GetCurrencyExchangeBySign(string sign); // 통화명에서 currencyList로부터 CurrencyExchange객체를 받기
– public void GetKeyboardInput(); // 환전금액과 통화명 입력받기
힌트: Spring 클래스의 Split을 사용하여 환전금액 (amount)와 통화명(currency sign)을 입력받는다.
1. 환전금액을 입력하세요 (예: 1000 KRW 또는 200 JPY 등): 100 USD
통화명 미국 USD의 환율시세는 매매기준율 1112 살때 1131.46 팔때 1092.54
2. 환전통화를 입력하세요 (예: 한국/미국/일본/유럽연합/중국/호주..): 중국
통화명 중국 CNY의 환율시세는 매매기준율 176.94 살때 189.32 팔때 168.1
– public void Print(); // 매매기준율, 살때, 팔 때 기준에 대한 환전을 계산하여 출력한다.
매매기준율 살때 팔 때
100 USD => CNY 628.46 597.64 649.93
3. 프로그램에 본인이 더 테스트해보고 싶은 Method나 routine을 추가하라. 그리고 “네이버 오늘의 환율 시세”에서 제공하는 모든 통화에 대하여 환율이 정확히 계산됨을 네이버 환율계산기와 비교하여 증명하라. (10%)
lecture6
Naver Currency Exchange
pass by value vs pass by reference vs pass by output
http://dis.dankook.ac.kr/lectures/hci10/entry/pass-by-value와-pass-by-reference와-pass-by-output-비교
pass value type by value (값형식을 값에 의한 전달)
pass reference type by value (참조형식을 값에 의한 전달)
-copy of reference가 전달
pass value type by reference (값형식을 참조에 의한 전달)
–ref 키워드 사용
pass reference type by reference (참조형식을 참조에 의한 전달)
–ref 키워드 사용
pass value type by output (값형식을 output에 의한 전달)
–out 키워드 사용
pass reference type by output (참조형식을 output에 의한 전달)
–out 키워드 사용
static class vs singleton design pattern
공용 데이터를 저장하여 사용하고자 할 때, singleton 패턴이나 static 클래스를 사용한다.
싱글톤 패턴 (Singleton design pattern)
-싱글톤 패턴이란 single instance object(해당 클래스의 인스턴스 하나)가 만들어지고, 어디서든지 그 싱글톤에 접근할 수 있도록 하기 위한 패턴
정적 클래스 (Static class)
-static 키워드를 사용한 정적 클래스는 정적 멤버만 포함 가능
-정적 클래스는 new 키워드를 사용하여 정적 클래스의 인스턴스를 생성할 수 없음
-정적 클래스는 봉인 클래스 (sealed class) 임
-static 클래스는 single-instance, global 데이터를 저장하여 사용하는 용도로 적당
-그러나, 싱글톤은 인자(parameter)나 객체(object)로 사용가능하나 정적클래스는 불가능
http://dis.dankook.ac.kr/lectures/hci10/entry/singleton-pattern과-static-class-비교