개발 STORY 49

객체 지향 프로그래밍(Object Oriented Programming)

OOP(Object Oriented Programming) 라고 불린다 프로그래밍엔절차 지향과 객체 지향 두가지로 나뉘어 지는데 절차 지향 프로그래밍은 컴퓨터의 관점에서 생각하고 데이터를 처리하도록 짜여져 실행 속도가 빠르다는 점이 있으며대표적으로 C가 해당되고 객체 지향 프로그래밍은 정보와 기능을 하나로 묶어서 생각하게 된다기능별로 묶어 모듈화를 시킴으로서 같은 기능을 중복으로 연산하지 않으며모듈을 재활용하기에 데이터처리량을 줄였고 C#, Java등이 이에 해당된다. 객체 지향에는 몇가지 특징이 있는데캡슐화 (Encapsulation) 가 그중 핵심이다객체를 캡슐로 만들어서 그 내부를 보호하고 볼 수 없게 한다(은닉)실제로 캡슐에 든 약을 보면 우리가 그 약의 안이 어떻게 되어있는지 어떠한 성분을 가졌..

Garbage Collection(가비지 컬렉션)

C#의 데이터 타입에는 크게 두가지가 있다 Value Type : int float 같은 타입 Reference(참조) Type : 모든 클래스는 참조 타입 -> class는 복사를 하면 얕은 복사가 된다. 참조는 0바이트 : 해당 주소를 부르는 이름이 변수인데 포인터는 이 주소를 저장하는 곳이라 8바이트의 크기를 가지지만, 참조는 해당 주소를 부르는 이름(변수)가 하나가 더 추가 되는 개념이다. 이를 기억해두고 있어야 한다. C#은C나 C++과 다르게 동적할당 된 데이터를 개발자가 임의로 메모리 해제를 하는 것이 불가능하다.대신 이를 해결해주기위해 나온 것이 바로 가비지 컬렉션(Garbage Collection)이다. 가비지 컬렉션은 자동으로 메모리를 관리해주는 편리한 기능을 가지고 있다.따라서 개발자..

Double Linked-List(이중 연결 목록)

single Linked List는 다음 노드를 가리키는 주소만을 가지고 있지만이와 다르게 이전 노드를 가리키는 것도 같이 있는 형태의 List  두개의 주소를 가지고 있다는 것으로 인해 용량은 크지만양쪽의 접근이 다 가능하기에 Single Linked보다는 데이터 접근성이 좋다.Single Linked List는 지나쳐버린 선행 노드에 접근 하려면 다시 헤드 노드부터 접근을 시작 해야 하지만 Double Linked List는 그렇게 하지 않아도 되는 것이 큰 장점이다. 기본구조#include#includetypedef struct _SNode { int data; struct _SNode* pPrev;//이전 노드 주소 struct _SNode* pNext;//다음 노드 주소} SNode;SNode ..

자료구조 2024.09.02

Namespace

//Namespace.csnamespace LJH{ class Lee { public int jihee = 0; }}namespace abc{ class Lee //다른 namespace에 있는 클래스라면 이름이 같더라도 사용 가능 { }}//Program.csclass Program{ static void Main() { LJH.Lee lee; abc.Lee lee1; }}Namespace가 다르면 class의 이름은 같아도 된다.게임으로 생각하면캐릭터와 몬스터의 스텟은 차이를 두는 경우가 많기에 이런식으로의 분류도 가능은 하다.상황에 맞게 사용하자

String(문자열)과 활용

char[] charArr = { 'A', 'B', 'C', '\0'}; //문자열 배열Console.WriteLine(charArr); //Console.WriteLine은 여러 변수들을 받아 알맞게 출력하는 함수들을 오버로딩 해놓았다string strTest = new string("strTest!"); // string : 마우스 커서 올려보면 calss 확인 가능string strChar = new string(charArr);string strConst = "strConst";char와 string의 데이터 타입이 다른 것을 확인 할 수 있다. static void Main(){ // 문자열(String) char[] charArr = { 'A', 'B', 'C', '\0'}; ..

구조체(Structure) / 함수 오버로딩(Function Overloading)

C#에서 구조체란 사용자 정의 데이터 유형(Data Type)으로 int, double 등과 같은 기본적으로 제공되는 (변수)값 유형이 아닌새로운 유형, 여러가지 유형을 사용하기위해 사용자가 직접 만들어서 사용하는 값 유형(Value Type)이다.라는 C에서 배운 구조체와 크게 다르지는 않다. 다만 몇가지가 다르고 추가로 알아둬야 할 것들이 있다. C#에서 구조체는 일반적인 변수와 같이 값을 가지는 데이터 형식이며클래스는 데이터 형식이 아닌 참조 형식 이라는 것이다이에 대한것은 기억만 해두고 차후 설명을 더 하도록 하겠다. //Point.csstruct Point{ //public int x = 100; //구조체는 선언과 동시에 초기화 하는 것이 불가능 하다. public int x..

Single Linked List(단일 연결 목록)

※최근에는 '단일 연결' 정도로 짧게 불린다. 배열의 특징으로는 많은 숫자의 같은 자료형 변수를 효율적으로 다룰 수 있게 해주는 것임을 기억 할 것이다.프로그램의 데이터가 메모리에 많이 쌓이게 되면, 내가 필요해서 크기가 큰 배열을 사용하게 될 경우연속된 메모리의 활용이 필요한 배열을 사용할 수 없는 현상이 있게 되는데이를 메모리 단편화 라고 한다. 이런 현상으로 인해 에러가 생길 수 있는데 그럼 우리는 데이터를 어떤 방식으로 처리를 해야될까?라는 점에서 고안 된 것중 하나가Single Linked List 이다. Single Linked List는 다음과 같이node라고 부르는 메모리 공간안에 data와 point를 저장한다data는 말 그대로 데이터를, point는 '다음 노드'의 주소를 저장하게 되..

자료구조 2024.08.27

Stack(스택) & Queue(큐)

자료구조 : 컴퓨터에 여러 데이터의 묶음을 저장하고, 사용하는 방법을 정의한 것필요에 따라 데이터를 효율적으로 다룰 수 있는 방법들을 통틀어 이르는 말특정한 상황에 놓인 문제를 해결하는 데 특화되어있으며(주로 부족한 메모리를 최대한으로 활용하기 위함), 많은 자료구조를 알아두면 다양한 상황에서 적합한 자료구조를 적용하여 문제를 '빠르고 효율적으로' 해결할 수 있다.Stack(스택)FILO(First In Last Out) : 선입 후출 이라 말하는 가장 기본적인 형태의 자료구조 가장 처음에 들어온 데이터가 가장 나중에 나간다.(가장 마지막에 들어온 데이터가 가장 먼저 나간다.)#include#include#include#include#define MAX_LEN 5int g_arr[MAX_LEN] = { ..

자료구조 2024.08.21

열거형(Enum, Enumeration)

#include#define IDLE 10 //치환이 되기에 디버깅시 표시가 안됨enum EAnimation //디버깅시 표시가 됨{ kIdle=10, kWalk, kRun, //애플에서 소문자 const와 비슷한 k를 붙여서 사용함 //처음에 쓰여진 것 순서대로 1씩증가 JUMP=20, FALL, //대입되면 대입 된 것 부터 1씩 증가 Attack, Die};void main(){ // 열거체, 열거형(Enumeration) : 상수를 만드는 것을 도와주는 개념 printf("kIdle: %d\n", kIdle); printf("kWalk: %d\n", kWalk); printf("kRun: %d\n", kRun); printf("JUMP: %d\n", JUMP); printf("FALL: %d..