Mission1(이성현).zip
<학습내용>
- 데이터 컬렉션
- String API
복습
다형성
다형성은 많은 부분에서 적용이 됨
어제는 형광등을 통해 예제를 함
형광등, 백열등이렇게 있었지만, 공통된 분모를 뽑아내 전구라는 새로운 부모클래스를 만듬.
앞으로 LED나 어떤 비슷한 기능이 있는 클래스가 오더라도 전구라는 부모 클래스를 상속 받을 수 있음
다른 workshop문제로 비행기, 배, 자동차를 예시로 했음
요구사항이 이름별로 오름차순을 하라고 함
그래서 vehicle이라는 인터페이스를 만들어서 모두 한 클래스로 합침
다형성은 프레임워크에도 많이 쓰이는데, 프로그래밍을 하다보면 많이 사용하는 부분이 있음 그구분을 슬롯처럼 만들어 그 안에 내용만 우리가 넣으면 됨
컬랙션(Collection)이란?
: 컬렉션은 객체를 저장할 수 있는 데이터 구조입니다. 상황에 맞는 컬랙션을 사용해서 객체를 보관할 수 있다.
- 관리하고자 하는 객체가 여러개인 경우, 그 객체들을 저장하고 탐색할 수 있는 또 다른 객체가 필요함
- 컬렉션은 객체를 담거나 꺼내는 용도로 활용하는 데이터 구조
ArrayList
object 형식을 담을 수 있는 컬렉션
제너릭을 지원하지 않는 컬렉션(ArrayList 등)은 기본적으로 모든 객체를 담을 수 있음. 하지만, 담는 순간 객체의 형식이 Object형으로 바뀌므로, 나중에 꺼낼 때는 원래의 형식으로 복원(캐스팅)하는 작업이 필요함
이름이 안적혀 있는 통이 있다면 거기에 쓰레기를 넣으면 쓰레기통이 되고 우산을 넣으면 우산통이된다.
복원시 캐스팅 작업이 필요하기 때문에 잘 사용하지 않음
제너릭
: 제너릭을 사용하면 객체 안에서 다루는 데이터의 형식을 객체를 만들 때 원하는 대로 지정할 수 있다.
잘 사용하지는 않지만 한 재사용 가능성이 높아짐
List 컬랙션
제너릭을 지원함 so 자주 사용
DIctionary 컬랙션
Queue 컬렉션
Stack 컬렉션
Stirng API
Date API
* {}는 C# 4.5ver이상부터 지원
문자열을 기본형으로 변환하기
int.Parse(v1)
Convert.ToInt32(v1)
요런식
Design Pattern
싱글톤 페턴
new 를 사용하지 않고 객체 하나만 이용하여 쓰자!
가비지컬랙터를 아낄 수 있다..?
일반방식
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SingletonEx1
{
class Program
{
static void Main(string[] args)
{
var u1 = new Myutil();
//var u1 = Myutil.GetInstance();
Console.WriteLine(u1.Add(10, 20));
DoWork();
}
static void DoWork()
{
var u1 = new Myutil();
//var u1 = Myutil.GetInstance();
Console.WriteLine(u1.Add(30, 30));
}
}
class Myutil
{
// 1. 외부에서 new를 사용해 객체를 만들지 못하게 처리
public Myutil()
{
Console.WriteLine("Myutil 생성자 호출되었습니다.");
}
public int Add(int v1, int v2)
{
return v1 + v2;
}
}
}
// new 를 사용하지 않고 객체 하나만 이용하여 쓰자!
싱글톤
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SingletonEx1
{
class Program
{
static void Main(string[] args)
{
//var u1 = new Myutil();
var u1 = Myutil.GetInstance();
Console.WriteLine(u1.Add(10, 20));
DoWork();
}
static void DoWork()
{
//var u1 = new Myutil();
var u1 = Myutil.GetInstance();
Console.WriteLine(u1.Add(30, 30));
}
}
class Myutil
{
// 1. 외부에서 new를 사용해 객체를 만들지 못하게 처리
private Myutil()
{
Console.WriteLine("Myutil 생성자 호출되었습니다.");
}
private static Myutil instance;
public static Myutil GetInstance()
{
if(instance == null)
{
instance = new Myutil();
}
return instance;
}
public int Add(int v1, int v2)
{
return v1 + v2;
}
}
}
// new 를 사용하지 않고 객체 하나만 이용하여 쓰자!