C# ) C# 기초 2 (구조체 , 튜플, 인터페이스, 추상클래스)
·
LAB/C#
구조체struct MyStruct{ public int MyField1 public int MyField2 public void MyMethod() { ... }}** 구조체는 데이터를 담기 위한 자료구조로 사용됩니다. 따라서 굳이 은닉성을 비롯한 객체지향의 원칙을 구조체에 강하게 적용하지 않는 편이며, 편의를 위해 필드를 public으로 선언해서 사용하는 경우가 많습니다. 특징클래스구조체키워드classstruct형식참조 형식(힙에 할당)값 형식(스택에 할당)복사얕은 복사(Shallow Copy)깊은 복사(Deep Copy)인스턴스 생성new 연산자와 생성자 필요선언만으로 생성생성자매개변수 없는 생성자 선언 가능매개변수 없는 생성자 선언 불가능상속가능값 형식이므로 상속..
C#) C# 기초 (데이터 형식 , 자료구조, 클래스)
·
LAB/C#
Nullabel 형식 변수를 null로 초기화 int? a = null;float? b = null;double? c = null; 1. HasValue / Value 속성 - HasValue : 해당 변수가 값을 갖고 있는지  또는 그렇지 않은지를 나타낸다. HasValue 속성이 False값을 갖고 있다면 그 변수는 비어있다는 뜻- Value : 변수에 담겨있는 값을 나타냅니다.int? a = null;Console.WirteLine(a.HasValue); // a는 null이므로 False 출력a = 37;Console.WirteLine(a.HasValue); // a는 37을 갖고 있으므로 True출력Console.WirteLine(a.Value); // 37을 출력 var 형식 var 키워드를 ..
QT 6 Programing [Chapter 28. Essential Network Programing]
·
LAB/QT_C++
Qt에 제공하는 네트워크 모듈을 이용해 응용 어플리케이션을 개발하는 방법** Qt에서는 네트워크 프로그래밍이 쉬운 이유는 Signal/Slot 기반으로 네트워크 기반 응용 어플리케이션을 구현할 수 있기 때문이다. 예를 들어 기존의 C++ 기반 채팅 서버를 구현한 다고 가정해 보도록 하자. 구현해야 하는 기능 중 클라이언트의 메시지를 처리하는 부분을 한번 생각해 보자. 여러 명의 클라이언트들이 서버에 접속되어 있는 상황에서 특정 클라이언트가 메시지를 보내면, 그 메시지를 서버에 접속한 클라이언트들에게 모두 전송해야한다. 이 기능을 C++에서 제공하는 표준 네트워크 라이브러리를 사용해 구현해보자. 먼저 클라이언트별로 Thread가 동작되고 있어야 한다. 10명의 클라이언트가 접속되어 있으면 10개의 Thre..
QT 6 Programing [Chapter 13. Stream - Chapter 16. Model and View]
·
LAB/QT_C++
13. Stream여기에서 Stream 이란 데이터를 특정 변수에 Write/Read 를 쉽게 하기 위한 방법을 말한다.QDataStream 은 Binary 데이터를 Write/Read 하는데 사용하며 QTextStream 은 Text 기반의 데이터를 Write/Read 하는데 사용된다. [QDataStream 상에 데이터를 Write/Read 하는 예제]encoding( ) 함수에서는 quint32, quint8, quint32 타입의 데이터를 QDataStream을 이용해 QByteArray 에 저장할 것이다. 각 변수에는 123, 124, 125가 저장할 것이다.#include #include #include #include QByteArray encoding(){ quint32 value1 ..
QT 6 Programing [Chapter 07. 데이터 타입과 클래스 - Chapter 12. QMainWindow를 이용한 GUI 구현]
·
LAB/QT_C++
Qt는 개발자의 편의성을 위해 다양한 데이터타입을 제공한다. Qt에서는 이기 종간의 데이터 교환 시 데이터 타입의 변화로 생기는 문제를 해결하기 위한 데이터 타입도 지원한다. 예를 들어 우분투 리눅스 운영체제상에서 Qt로 개발한 어플리케이션 내에 “Hello World” 라는 문자열을 Qt 에서 제공하는 QString 이라는 문자열을 전송한다. * 이기종 간의 데이터 교환 : 사용자에 의해서 입력되는 데이터 교환 처리를 위한 아이디, 패스워드, 데이터를 요청하는 사용자측의 시스템 정보를 포함하는 조건 정보를 수신하면, 기 저장된 정보로부터 상기 조건 정보와 일치하는 정보를 추출하여 제공하는 것을 특징으로 하는 이기종 시스템 간의 데이터 교환 시스템.Qt 문자열 데이터 타입 클래스 Qt는 단순한 문자열을 ..
QT 6 Programming [Chapter 01. Qt6 - Chapter 06. Layout]
·
LAB/QT_C++
QT 란? QT는 MS윈도우, 리눅스 그리고 MacOs와 같은 데스크탑 기반 운영체제에서 어플리케이션을 개발하기 위해 동일한 개발 프레임워크를 제공하는 기본언어 C++로 하는 GUI제작 크로스 플랫폼 프레임 워크 입니다. 더보기** 라이브러리 와 프레임워크 차이점  [라이브러리] "개발자가 특정 기능을 구현할 때 필요한 함수나 클래스를 라이브러리에서 호출하여 사용합니다."정의: 라이브러리는 특정 작업을 쉽게 처리할 수 있도록 미리 작성된 코드의 모음입니다. 개발자는 필요할 때 이 라이브러리에서 기능을 호출하여 사용할 수 있습니다.사용 방식: 개발자가 필요한 부분에서 라이브러리의 기능을 직접 호출합니다. 즉, 개발자가 제어를 가지고, 필요할 때 원하는 기능을 끌어다 쓰는 방식입니다.[프레임워크] "프레임워..
matplotilb.pyplot 데이터 시각화 그래프 만들기
·
LAB/Python
# 10월 4일 수업import matplotlib.pyplot as plt# as 뒤에 오는걸 소스에서 plt로 부르고 쓰겠다. (대중적인 단어로 설정하자)# matplotlib : 데이터 시각화 라이브러리 ( 한눈에 직관적으로 알아보기위해 사용)# pyplot 모듈은 공학용 도구로 널리 알려진 MATLAB과 사용법이 유사합니다.# numpy와 pandas와 같이 잘 쓰인다.import numpy as np # 과학 연산 데이터 라이브러리#plt.plot([10, 20, 30, 40,]) # x축 값을 생략할 경우 range(y축 데이터의 개수)로 표현 할 수 있다.#plt.plot([1,2,3,4], [12,43,25,15]) # x 값 y값 지정#### 함수화 하기def show_10x() -> ..
웹 크롤링
·
LAB/Python
from bs4 import BeautifulSoup #정적 페이지 웹 크롤링 시 사용되는 라이브러리from urllib.request import urlopenfrom urllib.parse import quote# urllib의 urlopen의 기능을 활용하여 특정 url의 html문서를 가져옴 (한국어는변환)# 때문에 브라우저에서 제공해주는 개발자 모드를 적극 활용한다.# 대부분의 크로미움 계열 (크롬,엣지,웨일 등)은 F12를 누르면 개발자 모드로 돌입한다.url_wikipedia = "https://ko.wikipedia.org/wiki/"target = "뷰티풀_수프_(HTML_파서)"html = urlopen(url_wikipedia + quote(target, safe=""))bs = Be..
C++ 기초플러스(15.3 예외처리) / C++로 Mariadb 연결 및 DB Table생성
·
LAB/C++
#include #include #include void deleteTask(std::unique_ptr &conn, int id) { try { // Create a new PreparedStatement std::unique_ptr stmnt(conn->prepareStatement("delete from tasks where id = ?")); // Bind values to SQL statement stmnt->setInt(1, id); // Execute query stmnt->executeQuery(); } catch(sql::SQLException& e){ std::cerr &conn, ..
C++ 기초플러스 (13. 클래스의 상속)
·
LAB/C++
클래스 파생시키기 기존 클래스를 활용해서 새로운 클래스를 만들어내는 것 ● 파생 클래스형의 객체 안에는 기초 클래스형의 데이터 멤버들이 저장된다.(파생 클래스는 기초 클래스의 구현들을 상속받는다.)● 파생 클래스형의 객체는 기초 클래스형의 메서드들을 사용할 수 있다.(파생 클래스는 기초 클래스의 인터페이스를 상속받는다.)● 파생 클래스는 자기 자신의 생성자를 필요로 한다.● 파생 클래스는 부가적인 데이터 멤버들과 멤버 함수들을 필요한 만큼 추가할 수 있다.● 파생 클래스는 기초 클래스의 private 멤버에 직접 접근할 수 없다. 기초 클래스의 메서드들을 통해서 접근해야 한다. ** 기초클래스의 private 멤버에 접근하려면, 기초클래스의 public 메서드를 사용해야한다. 특히, 파생 클래스의 생성자..
C++ 기초플러스 (12. 클래스와 동적메모리 대입)
·
LAB/C++
static 클래스 멤버 static  클래스 멤버는 그 클래스의 모든 객체가 공유한다.객체 생성과 관계없이 존재하고 접근할 수 있습니다. static 멤버, 사용하는 이유객체 간 데이터 공유: 모든 객체가 공통으로 사용해야 하는 데이터를 저장하고 관리하는 데 유용합니다. 예를 들어, 프로그램에서 생성된 객체의 총 개수를 세거나, 모든 객체가 접근해야 하는 설정 정보를 저장할 때 사용할 수 있습니다.객체 생성 없이 접근 가능: static 멤버는 객체를 생성하지 않고도 클래스 이름을 통해 직접 접근할 수 있습니다. 이는 객체 생성 없이도 특정 기능을 수행해야 할 때 유용합니다.메모리 효율성: static 멤버 변수는 모든 객체가 공유하기 때문에 각 객체마다 별도의 메모리를 할당하지 않아도 됩니다. 이는 ..
C++ 기초플러스 (08. 함수의 활용 - 10. 객체와 클래스)
·
LAB/C++
참조 변수 미리 정의된 어떤 변수의 실제 이름 대신 쓸 수 있는 대용 이름이다. 예를 들어, twain을 clemens 변수의 참조로 만들면, twain과 clemens는 같은 변수를 나타내는 것으로 사용할 수 있다.참조의 주된 용도는 함수의 형식 매개변수에 사용하는 것이다. 참조를 매개변수로 사용하면, 그 함수는 복사본 대신 원본 데이터를 가지고 작업한다.덩치 큰 구조체를 처리해야 하는 함수에서 포인터 대신에 참조를 사용할 수 있다.클래스를 설계할 때 필수적으로 사용된다.참조 변수의 생성 int  rats;int  &  rodents = rats;    // rodents를 rats의 대용 이름으로 만든다 ** 여기에서 "&(앰퍼샌드)" 는 주소 연산자가 아니라, 데이터형 식별자의 일부로 사용된 것이다..