2025.01.12 - [웹 개발 공부하기] - [01.09] 함수 포인터2025.01.12 - [웹 개발 공부하기] - [01.09] 구조체2025.01.12 - [웹 개발 공부하기] - [01.09] 공용체, enum2025.01.12 - [웹 개발 공부하기] - [01.09] 동적 메모리 할당2025.01.12 - [웹 개발 공부하기] - [01.09] 객체 지향 프로그래밍 방식2025.01.12 - [웹 개발 공부하기] - [01.09] 클래스(Class)2025.01.12 - [웹 개발 공부하기] - [01.09] 생성자와 상속성2025.01.12 - [웹 개발 공부하기] - [01.09] 오버로딩과 오버라이딩2025.01.12 - [웹 개발 공부하기] - [01.09] 인터페이스💥 익명 메소..

💥 인터페이스(Interface) - 인터페이스란 메소드의 목록만을 가지고 있는 명세(Specification), 사용자 정의 타입이다. - 메소드의 목록만 선언하고 구현은 하지 않는다. - 인터페이스의 선언 형태 - 인터페이스를 상속받는 클래스의 형태💥 인터페이스를 사용하는 이유 - 인터페이스는 본체가 정의되지 않는 추상메소드만 갖는다. - 인터페이스의 목적은 기존의 기능을 추가하거나 수정의 개념보다는 동일한 개념의 기능을 새롭게 구현하는 기능이다. - 공동 작업 시, 표준을 정하는 역할이다.💥 추상 클래스를 상속 하는 경우 - 일반적으로 클래스를 상속하는 이유는 기능의 확장이 목적이다.💥 인터페이스를 상속 하는 경우 - 스마트폰의 기능 목록 : 통화기능, 문자메시지, 와이파이, 블루투스, ....

💥 다향성 - 함수의 이름이 같더라도 전달인자의 타입이나 개수에 따라 구분된다. - 객체지향에서는 대표적으로 오버로딩과 오버라이딩 기법이 있다.💥 오버로딩(Overloading) - 사전적 의미는 '과적하다', '적재하다'라는 의미를 가지고 있다. - 겉모습은 똑같지만 내용이 다른 경우를 뜻한다. - 이름이 같은 함수일지라도 전달인자 타입이나 갯수가 다르면 다른 함수로 취급한다.💥 오버로딩 실습 해보기using System;public class Fruit{ public void Overload(int apple){ Console.WriteLine("사과 {0}개", apple); } public void Overload(int apple, int lemon){ ..

💥 생성자(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 들은 플러그인 방식으로 동작한다.새로운 기능을 추가하게 되면 매번 다시 컴파일 해야 하는 불편함이 있지만 플러그인 방식을 사용하면 그럴 필요가 없..