
💥 생성자(Constructor) - 모든 변수는 선언이 되면 값을 초기화해야 한다. - 객체도 본질적으로 변수이므로 선언되면 초기화해야 한다. - 객체 생성 시 초기화 전용 메소드를 제공한다. => 생성자 - 객체 생성 시 자동으로 호출되는 메소드이다.💥 생성자 실습해보기using System;class Dog { private int eyes, nose, mouse, ears; public void bark(){Console.WriteLine("멍멍");} public Dog(){ eyes = 0; nose = 0; mouse = 0; ears = 0; }}class HelloWorld { static void Main()..

💥 클래스(Class) - 사전적인 의미로는 '학급'이라는 뜻을 가지고 있다. - 사용자 정의 데이터타입이다. - 데이터와 메소드를 사용자인 내가 새로 정의한 데이터타입이기 때문에 클래스를 추상적인 데이터타입이라고 한다. - 클래스의 본질은 데이터타입(Data Type)이라는 점이다. - 구조체와 비슷하고, 멤버 변수와 멤버 함수로 구성된다.💥 클래스의 구성 - 사물의 특성을 정리하여 필드와 메소드로 표현하는 과정이 추상화이다. - 추상화된 결과를 하나의 클래스에 포함시키고 스스로 보호하는 것이 캡슐화이다.사물상태(필드)행동(메소드)사람피부색, 키, 나이, 성별, 이름, ...생각한다, 공부한다, 말한다, ...차배기량, 차종, 연료의 종류, ...달린다, 멈춘다, 짐을 싣는다, ...노트북CPU, ..

💥 객체 지향 - 객체(Object) => '사물'을 나타내는 추상적인 개념 - 지향(Oriented) => '~를 향한다'는 의미💥 구조적 프로그래밍 - 순차적, 하향식, 폭포수 방식 - 기능적인 기본 단위는 함수이다.💥 객체 지향 프로그래밍 - 기능적인 기본 단위는 객체이다. - 대표적인 예가 이벤트 기반의 모든 윈도우 프로그램이다.💥 추상화(Abstraction) - 사물의 공통적인 특징을 하나의 개념으로 다루는 것 - 추상이란 대상에서 특징만을 뽑아낸 것💥 캡슐화(Encapsulation) - 은닉하다, 숨긴다는 의미 - 캡슐화한다는 것은 외부에서 그 내부를 볼 수 없게 한다는 의미이다 - 외부로부터 데이터를 조작할 인터페이스가 필요하다.

💥 메모리 영역 1) 코드영역 - 실행할 명령어들이 순서대로 쌓인다. CPU가 이 영역에서 명령어들을 하나씩 가져다 처리한다. 2) 스택영역 - 스택이란 모든 원소들의 삽입, 삭제를 한 쪽 방향에서만 수행하도록 하는 선형 자료구조이다. - 후입선출방식(Last In First Out)이라고 한다. 나중에 들어온 것이 먼저 빠져나간다는 뜻이다. 3) 힙영역 - 힙은 컴퓨터 메모리의 일부가 할당되었다가 회수되는 일들의 반복이다. - 힙은 컴파일 시가 아닌 실행 시 사용자로부터 할당 메모리를 입력 받는다. 4) 데이터영역 - 전역변수와 static 변수가 저장되는 메모리 영역이다. - 이 메모리는 프로그램 종료 시 소멸된다.💥 동적 메모리 할당 함수의 원형void*malloc(si..

💥 공용체 - 공용체도 사용자 정의 자료형이다. - 구조체와의 차이점은 메모리 공간을 공유한다는 점이다. 💥 열거형 - 열거형은 enumeration 의 약자로 enum(이넘)이라고 읽는다. - 데이터들을 열거한 집합이다. - 컴파일러는 열거형 멤버들을 정수형 상수로 취급한다. - 키워드는 enum을 사용하여 정의한다.enum Week{ sun = 0, mon tue wed thu fri sat} - 열거형의 멤버들은 각 요일을 나타낸다. - 첫 번째 멤버 sun을 0으로 설정하면 mon부터 1씩 증가한다.💥 enum 실습 해보기#include enum Week{ sun = 0, mon, tue, wed, thu, fri, ..

💥 구조체 - 하나 이상의 서로 다른 종류의 변수들을 묶어서 새로운 데이터 타입을 정의하는 것💥 구조체를 사용하는 이유 - 연관된 변수들을 하나로 묶어서 관리함으로써 데이터 관리에 유용하다. - 데이터 양(변수의 갯수)이 많아지면 구조체가 유리하다.ex) 학생 정보 관리 시스템이라고 가정했을 때 - 이름, 나이, 성별 등의 정보들은 모두 변수로 선언. - 각각의 변수를 별도로 관리하면 연관성을 알 수 없다. - 학생 수가 10명 이내로 적으면 괜찮지만, 100명 1000명으로 늘어나면 변수의 관리가 힘들어진다. - 학생 한 명을 그룹으로 지정하여 이름, 나이, 성별 등의 정보들을 그룹으로 묶는다.💥 구조체의 기본 형태(학생 정보)struct student{ char name[10]; ..

💥 함수 포인터 - 함수명 앞에 *만 붙여주면 함수 포인터가 선언된다 - 함수 포인터도 포인터이므로 주소값을 저장한다 💥 함수 포인터 사용방법int (*func)(int a);자료형 (*함수 포인터 이름)(인자 목록); 💥 함수 포인터 사용이유직접 함수를 호출하면 되지 왜 복잡하게 함수 포인터를 사용하나? 라는 질문엔 이렇게 대답할 수 있을 것 같다.메모리의 크기 및 위치가 결정되는 시점은 컴파일 타임 또는 런타임 시점이다.컴파일 타임 시점에 결정은 정적 바인딩, 런타임 시점의 결정은 동적 바인딩 되었다고 한다.vs code에서 사용되는 extension 들은 플러그인 방식으로 동작한다.새로운 기능을 추가하게 되면 매번 다시 컴파일 해야 하는 불편함이 있지만 플러그인 방식을 사용하면 그럴 필요가 없..

💥 타입스크립의 필요성 - 자바스크립트 코드가 너무 지저분하다 - 코드의 스케일이 커지면서 코드 관리가 안된다💥 타입스크립트를 사용하면 좋은 점 - 자바스크립트 기반보다 버그를 줄일 수 있다. - 유지보수가 쉽다. - 강력한 높은 퀄리티의 코드를 생산할 수 있다. 타입스크립트 = 자바스크립트 + 타입체크기능타입스크립트 환경에 자바스크립트를 코딩하면 동작함자바스크립트 환경에 타입스크립트를 코딩하면 동작안함function plus(a,b){ return a + b;}console.log(plus(3, 5));자바스크립트에서 이 로직을 썼다고 치면,3과 5를 숫자로 인식하고 a+b = 3 + 5 = 8로 나오게 된다.하지만 '3', '5'로 적었다면?자바스크립트는 ' ' 를 보고 알아서 문자열인가? ..

💥 포인터포인터 변수의 줄임말로 메모리의 주소값을 저장하고 있는 변수보통 주소값을 저장한다는 표현을 반대로 해당 메모리를 가리킨다 라고도 표현함어느 특정 메로리 주소를 가리키거나 향하고 있다는 뜻 💥 포인터 사용방법 - 포인터 변수 선언 시 일반 변수명 앞에 * 기호를 붙인다 => 주소값만 저장하겠다는 의미 - & 기호를 통해 변수의 주소값을 얻어낼 수 있다출력문만 보면서 설명을 하자면,b의 값을 출력하면 b의 값인 100이 출력되고,&b의 값은 b의 메모리 주소를 출력하게된다.pB라는 변수는 &b 즉, b의 메모리 주소를 갖고 있으니, pB를 출력하면 b의 메모리 주소가 출력이된다.*pB는 위에서 선언했던 int *pB 와는 다른 개념이다. int *pB는 말그대로 pB라는 포인터 변수를 선언한 것..

💥 연산자· 정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는 것 - 산술 연산자 · 사칙 연산이 기본이다. - 대입 연산자 · 오른쪽에 있는 값을 왼쪽에 대입하는 역할 · 대입 연산자와 산술 연산자를 혼용해서 사용하기도 함 - 부호 연산자 - 증감 연산자 · 증가 연산자와 감소 연산자의 줄임말 - 관계 연산자 · 두 개의 피연산자로 관계를 따지는 연산자 · 같은 지 다른 지, 어느 쪽이 큰 지 작은 지를 비교하는 연산자 - 논리 연산자 · 두 개의 조건식 등을 결합하여 하나의 결과값을 만들어냄 - 비트 연산자 💥분기문 If문(=조건문)* 조건 : 어떤 의미를 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요소 💥 if문 사용 원리수행 조건에 관계 연산..