Microsoft PowerPoint - hci2-lecture7.ppt [호환 모드]

Size: px
Start display at page:

Download "Microsoft PowerPoint - hci2-lecture7.ppt [호환 모드]"

Transcription

1 Overview 고급 C# 프로그래밍 년가을학기 10/5/2013 박경신 속성 (Property), 인덱서 (Indexer) 대리자 (Delegate), 이벤트 (Event) 무명메소드 (Anonymous Method) 람다식 (Lambda Expression) 특성 (Attribute) 제네릭 (Generic) 컬렉션 (Collections) 파일입출력 (File I/O) 어셈블리 (Assembly) Property 속성이란클래스의속성을함수적동작에의하여표현하는구성요소 필드처럼보이지만실제로는메소드처럼동작 get, set 접근자에의하여표현 클래스의내부구조를추상적으로표현하여보호 내부적으로메모리가배정되지않음 메소드처럼동작하므로 virtual, static, abstract, override 키워드사용가능 Property 속성설명 name : private로설정된 Car 클래스의멤버필드 Name : public으로설정된 Car 클래스의속성 (Property) get : read 기능을수행하는메소드 set : write기능을수행하는메소드 value : set 접근자에게전달되는인자값 public class Car { private string name; public string Name { get { return name; set { name = value;

2 Property 속성종류 Read-Write 속성 : get, set 접근자모두를사용하며 property의가장일반적인모습 Read-only 속성 :get 접근자만프로퍼티에존재하며읽을수만있는읽기전용속성 Write-only 속성 : set 접근자만사용하며멤버필드에값을쓰기만할수있는속성 Static 속성 : 클래스레벨에존재하는속성으로, 개체를만들지않고도사용이가능하며,this 키워드사용이불가능 Property public class Car { private string name; public string Name { get { return name; set { name = value; public class PropertyTest { public static void Main(string[] args) { Car c = new Car(); // set연산자호출 c.name = 아반테 "; // get 연산자호출 Console.WriteLine(c.Name); Indexer 인덱서 (indexer) 란내부적으로객체를배열처럼사용할수있게해주는일종의연산자 속성과마찬가지로모습은필드이지만실제로는메소드로작동 인덱서특징 필드처럼보이지만실제로는메소드처럼동작 get, set 접근자에의하여표현 this 키워드를반드시사용 배열에접근하는것처럼 [] 기호를사용 Indexer public class FavoriteIndexer { private Hashtable myfavorite = new Hashtable(); public string this[string kind] { get { return (string)myfavorite[kind]; set { myfavorite[kind] = value; public class IndexerTest { public static void Main(string [] args) { FavoriteIndexer in = new FavoriteIndexer (); // string indexer 의 set 연산자호출 in["fruit"] = "apple"; in["color"] = "blue"; // string indexer 의 get 연산자호출 System.Console.WriteLine(in["fruit"]); // apple System.Console.WriteLine(in["color"]); // blue

3 Delegate & Event 대리자 (Delegate) Delegate 생성 Delegate +/- Operator 이벤트 (Event) Events 동작원리 Event 구성요소 이벤트핸들러대리자 (Delegate) 이벤트를발생시키는객체 (Publisher) 이벤트에응답하는객체 (Subscriber) 이벤트매개변수 (Event Argument) 9 Delegate 대리자특징 메소드를간접호출할때사용되는 method pointer 대리자의구조는함수의포인터 ( 주소 ) 를저장하는구조 저장되는함수의원형과대리자함수의원형은반드시같아야함 ( 매개변수리스트와반환값이동일 ) 객체지향의속성중에다형성과비슷한작업을수행 프로그램의실행시에생성 Method1(int x) DoWork() { { MethodX(100); MethodX delegate... Method2(int y) { caller contract... Implementer Delegate Delegate 정의, 생성및사용 delegate 키워드를사용하여정의 new 키워드를통하여생성 Delegate 호출로메소드간접호출 // 대리자정의 public delegate void DelegateMethod(int x); // 대리자가지칭할메소드구현 public static void CallbackMethod(int x) ){ Console.WriteLine(x); (); // 대리자생성및초기화 DelegateMethod dm = new DelegateMethod(CallbackMethod); // 또는 DelegateMethod dm = CallbackMethod; 간접호출될메소드... // 대리자를이용한메소드간접호출 dm(100); // CallbackMethod(100) 호출 11 Delegate public class Click { public void MouseClick(string what) { System.Console.WriteLine(" 마우스의 {0 버튼이클릭됐습니다.",what); public void KeyBoardClick(string i what) { System.Console.WriteLine(" 키보드의 {0 버튼이클릭됐습니다.",what); public delegate void OnClick(string what); // 대리자정의 public class DelegateTest { public static void Main(string[] args) { Click c = new Click(); OnClick dm = new OnClick(c.MouseClick); dm(" 왼쪽 "); // c.mouseclick( MouseClick( 왼쪽 ) 호출 dm = new OnClick(c.KeyBoardClick); dm(" 스페이스 "); // c.keyboardclick( 스페이스 ) 호출

4 Delegate 사용예 using System; class NumClass { public int number; public NumClass() { this.number =0; public void Plus(int value) { this.number += value; public void Minus(int value) { this.number -= value; public static void PrintHello(int value) { for(int i=0;i<value;i++) Console.WriteLine("Hello"); // Callback할메소드형식으로대리자선언 public delegate void Handler(int value); class DelegateTest { public static void Main() { NumClass c = new NumClass(); // 인스턴스메소드위임 Handler h = new Handler(c.Plus); // c.plus 대리자생성 h(10); // 대리자로 c.plus(10) 호출 => 10 Console.WriteLine( h(10)={0",c.number); // h(10)=10 c.plus(20); // 30 Console.WriteLine("c.Plus(20)={0",c.number); //c.plus(20)=30 h = new Handler(c.Minus); // c.minus 대리자생성 h(10); // 대리자로 c.minus(10) 호출 => 20 Console.WriteLine( h(10)={0",c.number); // h(10)=20 c.minus(20); // 0 Console.WriteLine( WriteLine("cMinus(20) c.minus(20)={0 {0",c.number); //cminus(20) //c.minus(20)=00 // 정적메소드위임 h = new Handler(NumClass.PrintHello); // 대리자생성 h(3); // 대리자로 NumClass.PrintHello(3) 호출 Hello 3 번출력 13 Multiple Delegate Delegate Operator Combine (+) : 대리자를결합하는연산자 Remove (-) : 대리자를제거하는연산자 public static void Main() { NumClass c = new NumClass(); Handler h = new Handler(c.Plus) + new Handler(c.Minus); // 대리자 Combine //h = (Handler) Delegate.Combine(new Handler(c.Plus), new Handler(c.Minus)); h(10); // c.plus(10) 와 c.minus(10) 를함께호출 Console.WriteLine("c.number={0",c.number); // c.number=0 h = h -new Handler(c.Minus); // 대리자 Remove //h = (Handler) Delegate.Remove(h, new Handler(c.Minus)); h(10); // c.plus(10) 만호출 Console.WriteLine("c.number={0",c.number); b // c.number=10 h += new Handler(NumClass.PrintHello); h(5); // c.plus(5) 와 NumClass.PrintHello(5) 를함께호출 Console.WriteLine("c.number={0",c.number); i b // c.number=15 14 Multiple Delegate delegate void StringHandler(string s); class DelegateTest { public static void Hello(string s) { Console.WriteLine("Hello {0!", s); public static void Bye(string s) { Console.WriteLine( Bye Bye {0!", s); public static void Main() { StringHandler x, y, z, w; // Hello 메소드를참조하는 x delegate 객체생성 x = new StringHandler(Hello); // Bye 메소드를참조하는 y delegate 객체생성 y = new StringHandler(Bye); // delegate x, y를결합하여 z delegate에대입 z = x + y; // 결합된 delegate z에서 x를제거한 w delegate w=z - x; 15 Console.WriteLine( 대리자 x 호출 "); x( X"); // Hello X! Console.WriteLine( 대리자 y 호출 "); y( Y"); // Bye Bye Y! Console.WriteLine( 대리자 z 호출 "); z( Z"); // Hello Z! Bye Bye Z! Console.WriteLine( 대리자 w 호출 "); w( W"); // Bye Bye W! Event Event란발생한사건을알리기위해보내는메시지 이벤트는마우스클릭, 키누름등동작의발생을알리기위해개체에서보내는메시지 GUI 컨트롤, 특정객체의상태변화를알리는신호로사용 이벤트, 이벤트발생기, 이벤트처리기로구성됨 이벤트송신기 (Publisher) 에서이벤트를발생시키고, 이벤트수신기 (Subscriber) 에서이벤트를캡처하여이벤트에응답 NET Framework에서의이벤트는 delegate 모델에기반 delegate 는이벤트에대해등록된이벤트처리기 (event handler) 목록을유지하여이벤트를발생시킨객체의발송자역할담당 16

5 Event 동작원리 이벤트송신기 (Publisher) 이벤트 (Event) 를발생하여특정객체 (Subscriber) 에게통지 이벤트수신기 (Subscriber) Publisher 특정이벤트발생시이벤트에반응하여처리할개체 Publisher로부터호출되어질이벤트처리메소드 (Event Handler) 를등록한객체 Event e Event Handler list == Delegate Invocation List Object1.method Subscribers Obj1 Request Object2.method Obj2 Delegate d Object3.method Obj3 17 Event 구성요소 이벤트핸들러대리자 (Delegate) 이벤트에응답하는메소드를가리키는대리자 닷넷프레임워크에서정의된 EventHandler 대리자형식으로선언 public delegate void EventNameEventHandler (Object sender, EventArgs e) Object sender 이벤트발생객체 EventArgs e 이벤트발생시넘겨줄추가정보, EventArgs 클래스로부터상속 추가정보를사용하지않는이벤트에대해서는닷넷프레임워크에서정의된 EventHandler 대리자이용 18 Event 구성요소 이벤트를발생시키는객체 (Publisher) 이벤트선언 event 키워드를사용하여대리자형식의필드처럼사용 인터페이스에서정의가능 public event EventNameEventHandler EventName; 이벤트를발생시키는내용을포함하는메소드 (OnEventName) 정의 이벤트를선언한클래스에서만이벤트호출 ( 발생 ) 하위클래스에서재정의하거나호출가능하도록 virtual 로정의 public class EventPub { public event MyEventEventHandler MyEvent; // 이벤트선언 protected virtual void OnMyEvent(EventArgs e) { if (MyEvent!= null) MyEvent(this, e); // 이벤트호출 ( 발생 ) 19 Event 구성요소 이벤트에응답하는객체 (Subscriber) 이벤트처리 (Event Handler) 메소드정의 이벤트핸들러대리자형식 하위클래스에서재정의하거나호출가능하도록 virtual 로정의 이벤트처리메소드를이벤트대리자에연결 ( 등록 ) class EventSub { virtual void MyEventH(Object sender, EventArgs e){... // 이벤트핸들러 EventPub p = new EventPub(); // publisher object EventSub s = new EventSub(); // subscriber object p.myevent += new MyEventEventHandler(s.MyEventH);// 이벤트핸들러등록 p.onmyevent(args); // 이벤트요청 20

6 Event 구성요소 이벤트매개변수 (Event Argument) 이벤트발생시추가할정보 이벤트핸들러로넘겨줄데이터 EventName EventArgs 클래스정의 System.EventArgs에서파생 // 이벤트매개변수클래스정의 (System.EventArgs 에서상속 ) class MyEventEventArgs : EventArgs { // 이벤트매개변수객체생성 MyEventEventArgs args = new MyEventEventArgs(..); // 이벤트발생시매개변수로처리 p.onmyevent(args); 21 Delegate 를통한이벤트처리 using System; namespace EventTest { public delegate void MyEventEventHandler(); // 대리자이벤트모델 class MyButton { // mybutton 클래스는윈도우응용프로그램이제공하는버튼컨트롤 public event MyEventEventHandler MyEvent; // 이벤트정의 public void OnMyEvent() { if (MyEvent!= null) MyEvent(); // 이벤트발생메소드 class EventTest { public EventTest() { // 이벤트를가지고있는 MyButton을객체로만듦 MBtt MyButton btt button1 = new MyButton(); MBtt // 이벤트에 button1_click을위임 button1.myevent += new MyEventEventHandler(this.button1_Click); // 이벤트에 button1 의이벤트를발생 button1.onmyevent(); void button1_click() { Console.WriteLine( 버튼에서이벤트발생 ); static void Main(string[] args) { EventTest e = new EventTest(); // 버튼에서이벤트발생 22 Delegate 를통한이벤트추가및제거 class EventTest { 클릭이벤트추가후버튼클릭 public EventTest() { -> 클릭이벤트발생 // 이벤트를가지고있는 MyButton을객체로만듦변경이벤트추가후버튼클릭 MyButton button1 = new MyButton(); -> 클릭이벤트발생 Console.WriteLine( 클릭이벤트추가후버튼클릭 ); -> 변경이벤트발생 // 이벤트에 button1_click을위임 button1.myevent 1M t += new MyEventEventHandler(this.button1_Click); th tt // 이벤트에 button1의이벤트를호출 button1.onmyevent(); // button1_click만호출 Console.WriteLine( 변경이벤트추가후버튼클릭 ); // 이벤트에 button1_change를위임 button1.myevent += new MyEventEventHandler(this.button1_Change); // 이벤트에 button1 의이벤트를호출 (Click + Change 호출 ) button1.onmyevent(); // button1_click & button1_change 함께호출 void button1_click() { Console.WriteLine( WriteLine( -> 클릭이벤트발생 ); void button1_change() { Console.WriteLine( -> 변경이벤트발생 ); static void Main(string[] args) { EventTest e = new EventTest(); 23 Event 에인자전달 delegate void ClickEventHandler(string label); // delegate event class MyButton { // MyButton 클래스는윈도우응용프로그램이제공하는버튼컨트롤 public event ClickEventHandler Click; // 이벤트정의 public void OnClick() { if (Click!= null) Click(label); // 이벤트발생메소드 public string Label { set { label = value; get { return label; string label; class EventTest { public EventTest() { // 이벤트를가지고있는 MyButton 을객체로만듦 MyButton button1 = new MyButton(); // 이벤트에 button1_label을위임 button1.label = 테스트 ; button1.click += new ClickEventHandler(this.button1_Label); // 이벤트에 button1의이벤트를호출 button1.onclick(); // button1_label 호출 void button1_label(string label) { Console.WriteLine( -> 클릭이벤트발생 : + label); static void Main(string[] args) { EventTest e = new EventTest();// -> 클릭이벤트발생 : 테스트 24

7 Anonymous Method 무명메소드 (Anonymous Method) 를사용하여메소드이름이아닌코드블록자체를대리자 (Delegate) 의매개변수로사용할수있음 별도의메소드를생성할필요가없으므로대리자를객체화하는데따르는코딩오버헤드를줄일수있음 public MyForm() { button1.click += new ClickEventHandler(button1_Click); void button1_click(object sender, EventArgs e) { MessageBox.Show(textBox1.Text); public MyForm() { button1.click += delegate(object sender, EventArgs e) { MessageBox.Show(textBox1.Text); 25 Lambda Expression 람다식 (Lambda Expression) 를사용하여더욱간단히바꿀수있음 public MyForm() { button1.click += delegate(object sender, EventArgs e) { MessageBox.Show(textBox1.Text); public MyForm() { button1.click += (sender, e) => MessageBox.Show(textBox1.Text); 26 C# Lambda Expression 람다식 (lambda expression) 은 =>( 이동 ) 연산자사용 람다식은 anonymous method와비슷하게익명함수 => 왼쪽에입력인자 (0~N개) 를, 오른쪽에실행식 / 문장을둔다. (input parameters) => expression (input parameters) => { statement 람다식의실행문장블록이 1 개일경우 { 괄호를생략가능 (x, y) => x == y (int x, string s) => slength s.length >x // 컴파일러가입력형식을유추못할때명시 () => Write( No ); // 입력매개변수가 0개이면, 빈괄호를지정 (p) => Write(p); str => >{MessageBo MessageBox.Show(str); // 문자열하나를받아메시지박스에출력 delegate int del(int i); del mydelegate = x => x*x; int j = mydelegate(5); // j=25 27 C# Delegate 발전과정 C# 1.0 명시적대리자 (delegate) 사용 C# 2.0 무명메소드 (anonymous method) 사용 C# 3.0 람다식 (lambda expression) 사용 delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); static void Main(string[] args) { // C# 1.0 TestDelegate testdelea= new TestDelegate(M); // C# 2.0 TestDelegate testdeleb= delegate(string s) { Console.WriteLine(s) ; // C# 3.0 TestDelegate testdelec= (s) => { Console.WriteLine(s) ; // invoke the delegates testdelea( Hello. My name is M and I write lines ); testdeleb( That's nothing. I'm anonymous and ); 28 testdelec( I'm a famous author. );

8 Attribute 특성 (Attribute) 은미리정의된시스템정보나사용자지정정보를대상요소 ( 어셈블리, 클래스, 구조체, 메소드등 ) 와연결시켜주는기능을가짐 Attribute 정보는 Assembly에 Metadata 형식으로저장됨 Attribute 형식 [attribute 명 ( positional_parameter, named_parameter=value,..)] Attribute는 [] 를사용하여, [] 안에 Attribute 이름, 지정위치매개변수와명명매개변수를기입 지정위치매개변수 (positional_parameter) 필수적인정보, 생성자매개변수에해당, 을사용하여값을기입 명명매개변수 (named_parameter) 선택적인정보, 속성에해당, = 를사용하여멤버필드와값을기입 내장특성에 Conditional, DllImport, AttributeUsage 등이 29 있음 Conditional Attribute Conditional 특성은조건부메소드를생성할때사용 특정전처리식별자에의해실행되는조건부메소드 C++ 에서 #if conditional #endif 전처리기지시문과유사 #define 유무에따라서호출이결정되는조건부메소드에사용 반드시 using System.Diagnostics를사용해야함 조건부메소드의반환형이 void 형을사용해야함 #define DEBUG // 만약 #undef DEBUG를하면 Conditional 부분이지나감 using System.Diagnostics; class ConditionalAttributeTest i ib { public static void Main() { [Conditional( DEBUG )] public static void DebugInfoPrint() {. // 요부분만호출 [Conditional( REGULAR )] public static void InfoPrint() {. 30 DllImport Attribute DllImport 특성은닷넷응용프로그램에서관리되지않는 DLL 함수또는메소드를사용할수있게하는특성 반드시 using System.Runtime.InteropService를사용해야함 아래예는, Win32 API의 MessageBox 함수를호출하는경우 using System.Runtime.InteropServices; class DllImportAttributeTest { [DllImport( User32 User32.dll dll, CharSet = CharSet.Auto)] public static extern int MessageBox(int h, String text, String title, uint type) public static void Main() { MessageBox(0, Test Win32 MessageBox, DllImportTest, 2); 31 Generic 제네릭 (Generic) 은다양한자료형에적용될수있는일반적인클래스를정의함 제네릭은사용할자료형을매개변수로전달받음 public class IntStack { int[] items; int count; public void Push(int item) { public int Pop() { public class FloatStack { float[] items; int count; public void Push(float item) { public float Pop() { public class Stack<T> { T[] items; int count; public void Push(T item) { public T Pop() {. Stack<int> istack = new Stack<int>(); istack.push(3); int x = istack.pop(); Stack<float> fstack = new Stack<float>(); fstack.push(3.0); float y = fstack.pop();

9 Collections 컬랙션 (Collections) 은객체를쉽게다룰수있도록여러가지클래스와인터페이스를미리정의한데이터구조 데이터구조란데이터를다루는방식을정의한것 프로그래머가일일이데이터구조를만드는불편함감소 컬랙션으로 ArrayList, SortedList, Hashtable, Stack, Queue, NameValueCollection 등이있음 컬랙션특징 데이터를보관할수있으며수정, 삭제, 삽입, 검색등의기능 컬랙션은클래스마다구현되어지는알고리즘 ( 예로, LinkedList, Hash, Stack, Queue 등 ) 이다를뿐같은부류임 동적으로메모리확장가능 Collections System.Collections의클래스와인터페이스 SortedList Stack, Queue BitArray NameValueCollections IEnumerable, IEnumerator ICollection IList IDictionary, IDictionaryEnumerator ICloneable ISerializable ArrayList Hashtable SortedList Class SortedList는 Hashtable과 ArrayList의혼합형 내부의데이터는키 (Key) 와값 (Value) 로이루어져있으며키를기준으로정렬되고키와인덱스로접근가능 내부적으로정렬된컬랙션을유지하고있는특징을가짐 public class SortedList: IDictionary, ICollection, IEnumerable, ICloneable SortedList t 특징 키의목록또는값의목록만반환하는메소드제공 내부적으로두개의배열, 즉키에대한배열과값에대한배열을유지하여요소를목록에저장 SortedList는각요소에대해키, 값또는인덱스의세가지방법으로접근 요소가삽입되면, 지정된키가이미존재하는검사 ( 중복키허용안함 ) SortedList Class SortedList 메소드 Add() 키와값으로데이터를삽입 Clear() 모든요소를제거 Contains() 특정키가들어있는지여부를확인 ContainsKey(), ContainsValue() 특정키 / 값이들어있는지여부확인 GetByIndex(), GetKey() 지정한인덱에서값 / 키를가져옴 GetKeyList() 키리스트를가져옴 Remove(), RemoveAt() 지정한키 / 인덱스로요소를제거 GetEnumerator() IDictionaryEnumerator 를반환

10 Queue Class Queue 는 FIFO(First-In, First-Out) 컬랙션 FIFO 먼저들어간데이터가제일먼저나오는메모리구조를클래스화 public class Queue: ICollection, IEnumerable, ICloneable Queue 메소드 Enqueue() 메소드는큐의첫위치에요소를삽입 Dequeue() 메소드는큐의마지막위치의요소를반환하고삭제 ( 반환되는데이터형은 object형 ) Peek() 메소드는마지막위치의요소를제거하지않고반환 ( 반환되는데이터형은 object형 ) Stack Class Stack 는 LIFO(Last-In, First-Out) 컬랙션 LIFO 제일마지막에들어간데이터가제일먼저나오는메모리구조를클래스화 public class Stack: ICollection, IEnumerable, ICloneable Stack 메소드 Push() 메소드는스택의맨위에요소를삽입 Pop() 메소드는스택의맨위에있는요소를삭제하고데이터반환 ( 반환되는데이터형은 object형 ) Peek() 메소드는스택의맨위에있는요소를제거하지않고반환 ( 반환되는데이터형은 object 형 ) ArrayList Class ArrayList 는 ILIST 를구현한대표적인클래스 ArrayList 는데이터를삽입했을때순서대로삽입되며중간삽입이나제거또한가능 public class ArrayList: IList, ICollection, IEnumerable, ICloneable ArrayList 메소드 Add(), AddRange() 메소드는데이터 / 데이터리스트삽입 Insert() 메소드는중간에데이터삽입 Remove(), RemoveAt(), RemoveRange() 메소드는해당요소제거또는인덱스로요소제거또는범위만큼요소제거 Sort() 메소드는요소정렬 GetEnumerator() 메소드는 IEnumerator 를반환 Hashtable Class Hashtable 은 IDictionary 를구현한대표적인클래스 내부의데이터는키 (Key) 와값 (Value) 을이용 public class Hashtable: IDictionary, ICollection, IEnumerable, Hashtable 메소드 ISerializable, IDeserializationCallback, ICloneable Add() 메소드는 ( 키, 변수 ) 로된데이터삽입 Clear() 메소드는모든요소제거 Remove() 메소드는키를확인하여요소삭제 ContainsKey(), ContainsValue() 메소드는특정키 / 값을포함하는지확인 CopyTo() 메소드는해쉬테이블에있는원소를 1차원배열로복사 Keys, Values 속성은 ICollection 으로반환 GetEnumerator() 메소드는 IEnumerator를반환

11 Collections Interface IEnumerable 인터페이스 GetEnumerator() IEnumerator 개체를반환 IEnumerator 인터페이스 내부에서 IEnumerable 을사용하여데이터검색기능제공 Current 속성 컬랙션에서현재객체에대한참조를반환 MoveNext() 다음요소로이동 Reset() Current 포인터를컬랙션의처음앞으로설정 ICollection 인터페이스 Count 속성 컬랙션의객체수를반환 IsSynchronized 속성 - 다중스레드된액세스를위해컬랙션에대한액세스를동기화한경우 true 반환 SyncRoot 속성 하나이상의코드문장이동시에한스레드에만실행되는것을확실하게하기위해잠그거나해제 CopyTo() 지정한배열위치부터컬랙션요소를배열로복사 Collections Interface IList 인터페이스 ICollection 인터페이스에서파생된것으로 IEnumerable과 ICollection 기능을모두포함 IsFixedSize 속성 리스트가고정길이리스트인지확인 IsReadOnly 속성 리스트가읽기전용인지확인 인덱서속성 인덱스값으로데이터를얻거나추가 Add() 리스트끝에데이터를추가 Clear() 리스트내의모든데이터를제거 Contains() 어떤데이터가리스트내에존재하는지여부확인 IndexOf() 리스트내의특정데이터의위치를반환 Insert() 리스트내의특정위치에데이터를삽입 Remove() 매개변수로입력된객체를리스트내에서제거 RemoveAt() 지정한인덱스의데이터를제거 Collections Interface IDictionary 인터페이스 순서에의존하는 IList와달리키와값으로대응시켜데이터를추출 IsFixedSize 속성 컬랙션의크기가정해져있는지검사 IsReadOnly 속성 컬랙션이읽기전용인지확인 Keys 속성 컬랙션내의모든키를나열 Values 속성 컬랙션내의모든값을나열 Add() 키와값을전달하여데이터를컬랙션에추가 Clear() 컬랙션의모든데이터를제거 Contains() 특정키가데이터와연관되어있는지검사 GetEnumerator() IDictionaryEnumerator 반환 Remove() 삭제할값의키를전달하여데이터를컬랙션에서제거 IDictionaryEnumerator 인터페이스 DictionaryEntry 속성 열거요소내의키와값을가져옴 Key 속성 열거요소내의키를가져옴 Value 속성 열거요소내의값을가져옴 LINQ C# 3.5 LINQ(Language Integrated Query) 쿼리 쿼리는데이터소스에서데이터를검색하는식 배열 / 데이터베이스에서조건에맞는자료만뽑는기능을제공 IEnumerable<T> (instance) = from ( 자동변수 ) in ( 배열 /DB) where ( 조건 ) select ( 리턴값 ) // 1. Data source int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 ; // 2. Query creation ( 짝수만선택 ) var numquery = from num in numbers where e (num % 2) == 0 select num; // 3. Query execution foreach (int num in numquery) Console.WriteLine( {0,1, i num);

12 LINQ 데이터소스 (DataSource) 데이터소스는 IEnumerable<T> 나 IQueryable<T> 인터페이스에서파생된것이면 LINQ를사용하여쿼리가능한형식임 테이터소스가쿼리가능한형식으로존재하지않는경우 LINQ 공급자가소스를나타내야함 // Create a data source from an XML document using System.Xml.Linq XElement contacts = XElement.Load(@ C:\myContactList.xml ); // LINQ to SQL Northwnd db = new Northwnd(@ C:\northwnd.mdf ); IQueryable<Customer> custquery = from cust in db.customers where cust.city == London select cust; LINQ 필터링 가장일반적인쿼리작업은 boolean 형식으로필터를적용하는것임 결과는 where 절을사용하여생성됨 && 및 연산자를사용하여 where 절에필요한만큼의필터식을적용가능 정렬 orderby절은반환된시퀀스의요소가정렬하고있는형식의기본비교자에따라정렬됨 var querylondoncustomers = from cust in db.customers where cust.city == London && cust.name == Devon orderby cust.name ascending select cust; LINQ 그룹화 group절을사용하면지정한키에따라결과를그룹화가능 그룹화결과를참조해야하는경우 into 키워드사용하여계속쿼리할수있는식별자를만들어야함 조인 데이터소스에서명시적으로모델링않된시쿼스간의연결생성 join절은 DB 테이블에직접작업하는대신개체컬랙션에대해작업 선택 ( 프로젝션 ) select 절에서쿼리결과를생성하고각반환된요소의형식지정 var querycustomers = from cust in db.customers group cust by cust.city into custgroup where custgroup.count() > 2 // 3 명이상의고객을포함하는그룹만반환 orderby custgroup.key select custgroup; LINQ 표준쿼리연산자확장메서드 LINQ의선언적쿼리구문은컴파일할때 CLR에대한메서드호출으로변환됨 이러한메서드호출은같은이름을사용하는표준쿼리연산자 Where, Select, GroupBy, Join, Max 및 Average 메서드구문을직접사용가능 int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 ; // Query Syntax var numquery1 = from num in numbers where (num % 2) == 0 orderby num select num; // Method Syntax var numquery2 = numbers.where(num => num%2 == 0).OrderBy(n=>n);

13 FILE I/O 스트림 (Stream) 자료의입출력을도와주는추상적인개념의중간매체 입력스트림 (Input Stream) 은데이터를스트림으로읽어들임 출력스트림 (Output Stream) 은데이터를스트림으로내보냄 스트림을사용하는곳 파일 키보드, 모니터, 마우스 메모리 네트워크 프린트 FILE I/O 입출력스트림 (Input/Output Stream) 클래스 FileStream 클래스 파일에스트림을생성하는클래스 BufferedStream 클래스 버퍼기능을가진바이트스트림 MemoryStream 클래스 메모리에입출력바이트스트림 TextReader & TextWriter 클래스 문자스트림입출력추상클래스 StringReader & StringWriter 클래스 string 입출력스트림 BinaryReader & BinaryWriter 클래스 데이터타입의메모리사이즈에따른바이너리입출력스트림 파일 (File) 과디렉토리 (Directory) 클래스 FileSystemInfo 파일시스템객체를나타내는기본클래스 Directory, DirectoryInfo 디렉토리를나타내는기본클래스 File, FileInfo 파일을나타내는기본클래스 Path 경로클래스 FILE I/O File 클래스 I/O 기본클래스로파일에관련된정보를제공하거나, FileStream의객체를생성하여파일의 I/O작업을수행 sealed 키워드를사용하여클래스의상속을막음 멤버메소드들이 public static으로선언 using System.IO 를사용 파일관련메소드제공 Create, Copy, Move, Delete 파일을생성, 복사, 이동, 삭제 Open, OpenRead, OpenText, OpenWrite 파일열기 AppendText 유니코드텍스트를추가하는 StreamWriter 생성 Exists 파일존재여부를확인 SetCreationTime, GetCreationTime 파일이생성된날짜와시간 SetAttributes, GetAttributes 파일의지정된 FileAttributes 등등 FILE I/O Directory 클래스 디렉토리생성, 이동, 삭제, 디렉토리존재여부, 하위디렉토리들의이름, 디렉토리내의파일이름의정보를알아내는데사용하는클래스 sealed 키워드를사용하여클래스의상속을막음 멤버메소드들이 public static으로선언 디렉토리관련메소드제공 CreateDirectory, Delete 디렉토리생성, 이동, 삭제 Exists 디렉토리존재여부를확인 GetFiles 디렉토리에있는파일목록배열반환 GetDirectories 디렉토리에있는하위디렉토리목록배열반환

14 FILE I/O Path 클래스 파일이나디렉토리의경로 (Path) 를확장및변경, 수정하는클래스 sealed 키워드를사용하여클래스의상속을막음 멤버필드와메소드들이 public static ti 으로선언 경로관련필드와메소드제공 DirectorySeparatorChar 디렉토리구분자캐릭터 Combine 경로들결합 GetFileName 경로에서파일이름을얻기 FILE I/O FileStream 클래스 파일입출력뿐만아니라파일과관련된다른운영체제의핸들 ( 파이프, 표준입력, 표준출력등 ) 을읽고쓰는데도유용하게사용 바이트스트림이아닌문자스트림을사용하기위해서는 FileStream을 StreamReader와 StreamWriter로변환하여사용 using System.IO; class FileTest { public static void Main() { FileStream fs = File.OpenRead( C:/Test.txt ); StreamReader r = new // 한글처리시필요 StreamReader(fs, System.Text.Encoding.Default); r.basestream.seek(0, S SeekOrigin.Begin); i i while(r.peek() > -1) { r.readline();. r.close(); FILE I/O using System.IO; class FileTest { public static void Main() { string path C:\Output.txt FileStream fs = new FileStream(path, FileMode.Create); StreamWriter w = new // 한글처리시필요 StreamWriter(fs, System.Text.Encoding.Default); t //w.basestream.seek(0, SeekOrigin.Begin); w.basestream.seek(0, SeekOrigin.End); // 맨뒤에추가 w.writeline(s); //. 중간생략 w.flush(); // 스트림에기록한모든데이터를밀어내는역할 wclose(); w.close(); Assembly COM 이미사용중인검증된코드의재사용을위해 COM 활용 서로다른언어로작성된 Binary 타입공유를위해 COM 서버생성 Client 에서 COM 서버를호출할때 COM 서버의버전을확인할수없음 COM 서버위치나이름이바뀌게되면 Registry의변경이쉽지않음 Assembly 어셈블리란.exe,.dll과같은프로그램의제일작은실행단위 배포의단위로써코드재사용및버전관리를가능하게하는단위 Class 접근제한자인 internal의허용단위 같은 COM DLL에대한서로다른버전동시제공가능 ( 즉, Client가원하는버전을파악하여해당버전을로딩 ) 어셈블리내에자신에대한메타데이터를포함하여배포는해당파일을원하는위치에복사함 ( 즉, Registry에등록하지않음 ) Native Code가아니라 MSIL이라는중간코드

15 Assembly 어셈블리의구성 Manifest - 다른어셈블리를참조한다면그정보가필요함 Type Metadata - 어셈블리안에존재하는클래스, 속성, 메소드, 변수등에대한정보 MSIL 컴파일했을때만들어지는실제실행파일 Resource - 어셈블리가사용하는리소스이며해당프로그램의이미지나텍스트, 아이콘등 Assembly ILDASM 도구 Visual C++ 의 dumpbin.exe나 Turbo C의 tdump.exe에해당하는유틸리티로실행파일의내부구조를보여줌 메니페스트메타정보를표시.assembly.class : 해당어셈블리내에존재하는클래스파일의정보를보여줌.method : 해당어셈블리내에존재하는메소드의정보를보여줌.ctor : constructor 파일의약자로생성자를의미 Assembly C# DLL 생성 새프로젝트 -> 템플렛 -> 클래스라이브러리선택 어셈블리로사용할기능은 *.cs 파일로작성 컴파일은 *dll *.dll 파일로작성 C# DLL 활용 해당어셈블리가필요한곳에서 DLL 참조하여사용 해당어셈블리의네임스페이스 using 어셈블리의속성, 메소드사용 Assembly csc 컴파일러를사용한 C# DLL 생성및활용예 Point 클래스와 Point3D 클래스를 PointLib 라이브러리로생성 csc /out:pointlib.dll /t:library Point.cs Point3D.cs PointTest t 클래스에서 PointLib 라이브러리사용 csc /out:pointtest.exe /reference:pointlib.dll PointTest.cs 작업한어셈블리참조추가하기

Microsoft PowerPoint - hci2-lecture7.ppt [호환 모드]

Microsoft PowerPoint - hci2-lecture7.ppt [호환 모드] Overview 고급 C# 프로그래밍 321190 2009 년가을학기 10/12/2009 박경신 속성 (Property), 인덱서 (Indexer) 대리자 (Delegate), 이벤트 (Event) 무명메소드 (Anonymous Method) 특성 (Attribute) 제네릭 (Generic) 컬렉션 (Collections) 파일입출력 (File I/O) 어셈블리

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

선형대수학 Linear Algebra

선형대수학  Linear Algebra 배열, 컬렉션, 인덱서 array, collection, indexer 소프트웨어학과 HCI 프로그래밍강좌 배열 배열 (array) 동일한자료형을다수선언 선언형식 데이터형식 [ ] 배열이름 = new 데이터형식 [ 개수 ]; int[ ] array = new int[5]; 인덱스 (index) 는 0 에서시작 scores[0] = 80; scores[1] =

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

Microsoft PowerPoint - hci2-lecture12 [호환 모드] Serialization C# Serialization 321190 2012 년가을학기 11/28/2012 박경신 Serializaiton( 직렬화 ) 란객체상태를지속시키거나전송할수있는형식으로변환하는과정으로, Serialization 반대로다시객체로변환하는것을 Deserialization 임 Serialization i 을사용하는이유 객체의상태를저장소에보존했다가나중에똑같은복사본을다시만들기위하거나,

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

(Microsoft PowerPoint - hci2-lecture12 [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - hci2-lecture12 [\310\243\310\257 \270\360\265\345]) Serialization C# Serialization 321190 2015 년가을학기 11/27/2015 박경신 Serializaiton( 직렬화 ) 란객체상태를지속시키거나전송할수있는형식으로변환하는과정으로, Serialization 반대로다시객체로변환하는것을 Deserialization 임 Serialization 을사용하는이유 객체의상태를저장소에보존했다가나중에똑같은복사본을다시만들기위하거나,

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

슬라이드 1

슬라이드 1 컬렉션프레임워크 (Collection Framework) 의정의 - 다수의데이터를쉽게처리할수있는표준화된방법을제공하는클래스들 - 데이터의집합을다루고표현하기위한단일화된구조 (architecture) - JDK 1.2 이전까지는 Vector, Hashtable, Properties와같은컬렉션클래스로서로다른각자의방식으로처리 - 컬렉션프레임워크는다수의데이터를다루는데필요한다양하고풍부한클래스들을제공하므로프로그래머의부담을상당부분덜어준다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 왜생겼나요..? : 절차지향언어가가진단점을보완하고다음의목적을달성하기위해..! 1. 소프트웨어생산성향상 객체지향소프트웨어를새로만드는경우이미만든개체지향소프트웨어를상속받거나객체를 가져다재사용할수있어부분수정을통해소프트웨어를다시만드는부담줄임. 2. 실세계에대한쉬운모델링 실세계의일은절차나과정보다는일과관련된많은물체들의상호작용으로묘사. 캡슐화 메소드와데이터를클래스내에선언하고구현

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

Microsoft PowerPoint - Lect07.pptx

Microsoft PowerPoint - Lect07.pptx 이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Package 개념 Package 묶는방법사용하기기본 Package Utility Package Generic Class Generic Method Collection ArrayList LinkedList Set Queue Map Collection Class 3 패키지 (package)

More information

<4D F736F F D20BEBEBCA520C4DAB5F920BFACBDC0202D20B8D6C6BC20BEB2B7B9B5E5BFCD20C0CCBAA5C6AE2E646F6378>

<4D F736F F D20BEBEBCA520C4DAB5F920BFACBDC0202D20B8D6C6BC20BEB2B7B9B5E5BFCD20C0CCBAA5C6AE2E646F6378> C# 코딩연습 멀티쓰레드와이벤트 2009-05-18 김태현 (kimgwajang@hotmail.com) I. 서 제블로그 1 의카테고리중에.NET Tip of The Day' 라는것이있는데, 동명의사이트 2 에실린유용한닷넷팁들을번역하여소개하는포스팅이모여있습니다. 이중 Correct event invocation 3 라는제목의포스트가있는데, 멀티쓰레드환경에서이벤트를호출하는올바른방법에관해서설명을하고있습니다.

More information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

슬라이드 1

슬라이드 1 CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft PowerPoint - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 클래스와메소드심층연구 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 접근제어 class A { private int a; int b; public int c; // 전용 // 디폴트 // 공용 public class Test { public static void main(string args[]) { A obj = new

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 22 장제네릭과컬렉션 이번장에서학습할내용 제네릭클래스 제네릭메소드 컬렉션 ArrayList LinkedList Set Queue Map Collections 클래스 일반적인하나의코드로다양한자료형을처리하는기법을살펴봅시다. 제네릭이란? 제네릭프로그래밍 (generic programming) 다양한타입의객체를동일한코드로처리하는기법 제네릭은컬렉션라이브러리에많이사용

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 C++ : 소프트웨어개발플랫폼에객체지향개념제공 객체지향 : 자료와이들자료를어떻게다룰것인지따로생각하지않고단지하나의사물로생각 형 변수가사용하는메모리크기 변수가가질수있는정보

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

Microsoft PowerPoint - CSharp-2-기초문법

Microsoft PowerPoint - CSharp-2-기초문법 2 장. C# 기초문법 자료형 제어문 배열 연산자 순천향대학교컴퓨터학부이상정 1 자료형 순천향대학교컴퓨터학부이상정 2 CTS CTS(Common Type System) 닷넷기반의여러언어에서공통으로사용되는자료형 언어별로서로다른자료형을사용할때발생할수있는호환성문제를해결 값 (Value) 형과참조 (Reference) 형을지원 CTS가제공하는모든자료형은 System.Object를상속받아구현

More information

gnu-lee-oop-kor-lec11-1-chap15

gnu-lee-oop-kor-lec11-1-chap15 어서와 Java 는처음이지! 제 15 장컬렉션 컬렉션 (collection) 은자바에서자료구조를구현한클래스 자료구조로는리스트 (list), 스택 (stack), 큐 (queue), 집합 (set), 해쉬테이블 (hash table) 등이있다. 자바는컬렉션인터페이스와컬렉션클래스로나누어서제공한다. 자바에서는컬렉션인터페이스를구현한클래스도함께제공하므로이것을간단하게사용할수도있고아니면각자필요에맞추어인터페이스를자신의클래스로구현할수도있다.

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 02. 표준 입출력 # 메소드의구조자주반복하여사용하는내용에대해특정이름으로정의한묶음 반환형메소드이름 ( 매개변수 ) { 실행문장 1; : 실행문장 N; } 메소드의종류 Call By Name : 메서드의이름에의해호출되는메서드로특정매개변수없이실행 Call By Value : 메서드를이름으로호출할때특정매개변수를전달하여그값을기초로실행하는메서드 Call By Reference : 메서드호출시매개변수로사용되는값이특정위치를참조하는

More information

초보자를 위한 C# 21일 완성

초보자를 위한 C# 21일 완성 C# 21., 21 C#., 2 ~ 3 21. 2 ~ 3 21.,. 1~ 2 (, ), C#.,,.,., 21..,.,,, 3. A..,,.,.. Q&A.. 24 C#,.NET.,.,.,. Visual C# Visual Studio.NET,..,. CD., www. TeachYour sel f CSharp. com., ( )., C#.. C# 1, 1. WEEK

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

LINQ의 개요

LINQ의 개요 LINQ 의개요 이수겸 @ 올랩컨설팅 K E N I A L L E E _ A T _ G M A I L. C O M H T T P : / / K E N I A L. T I S T O R Y. C O M 2 0 0 7. 1 0. 6 LINQ.NET Language-INtegrated Query.NET 프레임워크 3.5, Visual Studio 2 008(Orcas)

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

제 1장 C#의 개요

제 1장 C#의 개요 C# 프로그래밍언어 MS사의앤더스헬스버그 (Anders Hejlsberg) 가고안.NET에최적화된언어컴포넌트지향프로그래밍언어자바의단점을보완 실행방법 : 자바 : 인터프리테이션, C#: 컴파일방법자바언어를대체할수있는언어 C# 의특징 객체지향언어 : 자료추상화델리게이트와이벤트멀티스레드, 예외처리연산자중복, 제네릭 C 계열의언어 C++ 와자바로부터영향을받았음. C:

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

07 자바의 다양한 클래스.key

07 자바의 다양한 클래스.key [ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information