요약 및 Code 첨부 |
S/W(C#) |
S/W(C++) |
◉LINQ ●LINQ 예제1(436~438) ●LINQ의 기본(1/4) : FROM ●LINQ의 기본(2/4) : WHERE ●LINQ의 기본(3/4) : ORDERBY ●LINQ의 기본(4/4) : SELECT ●LINQ 예제2(439~440) ●LINQ 예제3(443~444) ●여러 개의 데이터 원본에 질의하기 ◉성적관리에 LINQ적용하기 ●Student class 부분 ●Main class 부분 |
●DB상식(SQL) ◉가상 함수(virtual) ●class 포인터와 문제점 ●virtual ◉연산자오버로딩 ●복합대입연산자( += ) ●[ ] 연산자 ●멤버 참조 연산자( -> ) |
C# |
◉LINQ
●LINQ 예제1(436~438)
- Language INtegrated Query의 약어로 C#언어에 통합된 데이터 기능이다.
- Query
- 데이터에 대해 물어보는 것으로써 기본적으로 다음 내용을 포함한다.
- From : 어떤 데이터 집합에서 찾을 것인가?
- Where : 어떤 값의 데이터를 찾을 것인가?
- Select : 어떤 항목을 추출할 것인가?
- Source Coding
class Profile new Profile(){Name = "김태희", Height = 158}, new Profile(){Name = "고현정", Height = 172}, new Profile(){Name = "이문세", Height = 178}, new Profile(){Name = "하동훈", Height = 171}, }; |
- 결과
●LINQ의 기본(1/4) : FROM
- 모든 LINQ 쿼리식은 반드시 from절로 시작한다.
- 쿼리식의 대상이 될 데이터 원본(Data Source)과 데이터 원본 안에 들어 있는 각 요소 데이터를
나타내는 범위 변수(Range Varible)을 지정하는 역할을 한다.
- 데이터 원본은 반드시 IEnumerable<T> 인터페이스를 상속하는 형식이어야 한다.
- 범위 변수는 쿼리 변수(Query Variable)이라도고 한다.
- foreach의 반복 변수를 생각하면 이해가 쉽다.
- foreach(int X in a)에서 X이다.
●LINQ의 기본(2/4) : WHERE
- 필터 역할을 하는 연산자이다.
- from절이 데이터 원본으로부터 뽑아낸 범위 변수의 조건을 매개 변수로 입력해준다.
●LINQ의 기본(3/4) : ORDERBY
- 데이터의 정렬을 수행하는 연산자이다.
- 다른 설정이 없으면 오름차순으로 정렬한다.
- descending 키워드를 이용하면 내림차순으로 데이터를 정렬한다.
●LINQ의 기본(4/4) : SELECT
- 최종 결과를 추출한다
- LINQ의 결과는 IEnumerable<T>로 반환된다.
- 이 때 형식 매개 변수 T가 select문에 의해 결정 된다.
●LINQ 예제2(439 ~ 440)
- Source Coding
class Program |
- 결과
●LINQ 예제3(443 ~ 444)
- Source Coding
class Profile |
- 결과
●여러 개의 데이터 원본에 질의하기
- 여러 개의 데이터 원본에 접근하려면 from문을 중첩해서 사용하면 된다.
class Class Score = new int[]{99, 80, 70, 24}}, Score = new int[]{60, 45, 87, 72}}, Score = new int[]{92, 30, 85, 94}}, Score = new int[]{90, 88, 0, 17}} |
- 결과
◉성적관리에 LINQ 적용하기
- 적용을 다 하지 못해서 부득이하게 강상규 선배님의 자료를 업로드 합니다.
●Student class 부분
class Student |
●Main Class 부분
class Program |
- 결과
C++ |
●DB상식(SQL)
- S(structured), Q(query), L(language) : 구조적 질의 언어
- 데이터베이스를 사용할 때, 데이터베이스에 접근할 수 있는 데이터 베이스 하부 언어이다.
◉가상 함수(virtual)
●class 포인터와 문제점
- 천개의 객체를 만들 경우 천개의 class 포인터를 만들어야 하지만 상속을 통해 하나로 class 포인터
하나로 처리가 가능하다.
- class 포인터는 상속된 모든 class를 가리킬 수 있다.
- 하지만 문제가 발생한다.
- 하나의 포인터로 가리킬 수는 있지만, 제어도 되지 않을뿐더러 어떤 것인지 확인도 되지 않는다.
●virtual
- 객체 기반으로 함수를 호출 할 수 있다.
- 포인터와 상관없이 최종 객체를 대상으로 처리해준다.
- 객체의 실체를 알고 싶거나 객체 단위로 처리할 때 사용한다.
- 함수의 동적링킹
- 함수의 연결을 사전에 결정된게 아니라 실행 도중의 상황에 맞게 정해진다.
◉연산자 오버로딩
●복합대입연산자(+=)
- +연산자와 유사하지만, 실제로는 전혀 다르다.
- 호출한 객체를 직접 변경하기 때문에 const가 아니다.
- 자기 자신이 피연산자 이므로 임시 객체를 필요로 하지 않는다.
●[ ] 연산자
- [ ] 연산자는 배열에서 첨자 번호로부터 요소를 찾는다.
- 반드시 멤버 함수로만 정의할 수 있으며, 전역 함수로는 정의할 수 없다.
●멤버 참조 연산자(->)
- 참조하는 연산자는 (.)과 (->) 2가지가 있다.
- 그러나, 객체의 포인터로부터 멤버를 읽는 (->)연산자만 오버로딩 대상이다.
- 원래는 이항 연산자인데 오버로딩을 하게되면 단항 연산자가 된다.
- 전역 함수로는 정의할 수 없고, 클래스의 멤버 함수로만 정의할 수 있다.
수정 및 추가 사항을 댓글로 달아주세요~^^
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20150623-7번-김재홍-MySQL설치(C#)_템플릿의 개념(C++) (7) | 2015.06.24 |
---|---|
20150619-5번-김성주-ADO.NET / (4) | 2015.06.19 |
20150618 4번 김민정 C#(str 연산자, Str 연산자, 다형성) (2) | 2015.06.19 |
20150618 4번 김민정LINQ(groupby, join, LINQ를 사용한 성적처리 프로그램) (2) | 2015.06.19 |
2015.06.17 졸업생과의 만남 ^^ (16) | 2015.06.17 |
20150616 - 2번- 강동조 델리게이트,람다식/ (5) | 2015.06.16 |
2015-06-11 32번 천정호 (5) | 2015.06.13 |
20150612 (바뀐 번호)31번 - 홍준모 - c# : 델리게이트의 기본 개념, windowform 활용 c++ : (4) | 2015.06.12 |