본문 바로가기

C++

(30)
([C++] 29강) 정보은닉과 접근제어지시자 (private, public, protected) 안녕하세요 잭클입니다! 이번시간에는 정보은닉과 접근제어지시자에 대해서 배워보도록 하겠습니다! 저번시간까지는 사람에 대한 정보인 People 클래스를 만들어 보았습니다. 오늘은 조금 더 보안이 필요한 "계좌" 를 의미하는 클래스를 한번 만들어 보도록 하겠습니다. "정보은닉"이란 무엇을 의미하는것 같으신가요? "은닉"은 숨기는 거니까 정보은닉이란 정보를 숨기는 행위 아닐까요?? 맞습니다. 클래스의 정보를 남들이 볼수 있는 수준을 정해주는 행위를 정보은닉 이라고 하며 그 정보의 보안 수준을 정해주는 문법이 바로 "접근제어지시자" 입니다. 정보은닉은 왜 필요할까요? 대표적인 이유는 말그대로 보안입니다. 우리가 나중에 만들 프로그램들은 우리만 쓸 것이 아닐수도 있습니다. 내가 만든것을 남이 쓸수도 있게되겠죠 그런..
([C++] 28강) 객체지향(OOP)의 4대 기본원칙 중 캡슐화 안녕하세요 잭클입니다. 이번시간에는 객체지향프로그래밍(OOP)의 4대 기본원칙이라고 부르는 개념들과 그중에서 한가지인 캡슐화를 배워보도록 할건데요! "기본원칙" 이라고 부르는 만큼 매우매우 중요한 개념이니 꼭꼭 외워두시길 바랍니다! 객체지향의 4대 기본원칙은 아래와 같습니다. 추상화(Abstraction) 캡슐화(Encapsulation) 상속(Inheritance) 다형성(Polymorphism) 이 중 우리는 오늘 캡슐화에 대해서 배워보도록 하겠습니다. 우선 이해하기 쉽기 위해서 캡슐화 라는 이름 가지고 예시를 들어보도록 하겠습니다. "캡슐" 하면 뭐가 생각나시나요? 뭐 뽑기 캡슐이 생각날수도있겠지만, 설명을 위해 저는 알약 캡슐로 예시를 들어보겠습니다. 자, 우리는 감기에 걸려서 종합 감기약을 먹어..
([C++] 27강) 클래스(class)와 객체(object) 이번시간에는 클래스에 대해서 알아보도록 하겠습니다. 저번시간에 배웠던 객체지향 프로그래밍을 기억하시겠죠? 제가 저번 글 후반에 적었던 현실과 빗대어 설명한 글에 객체지향프로그래밍에 설계도에 대해서 말을 했습니다. 클래스란 여기서 바로 이 "설계도"입니다. 객체 (object)란 이 설계도대로 만들어진 물체를 말하는것이구요 우리가 자동차를 만든다고 칩시다. 이 "자동차" 가 바로 객체인것이고 객체를 만들기 위해서, 그 객체가 어떻게 생겼는지 설명해주는 설계도가 바로 클래스인 것입니다. 이해되셨나요?? 자 그럼 바로 클래스를 한번 만들어 보도록 하겠습니다. C++에서 클래스를 만드는 방법은 아래와 같습니다. class 클래스명 { //클래스 내용 }; 이런식으로 해주면 됩니다! 자 그럼 이번에는 예제를 한번..
([C++] 26강) 객체지향프로그래밍과 절차지향프로그래밍 [매우 중요] 안녕하세요, 잭클입니다. 이번시간에는 드디어 C++에서 가장 중요한 핵심 내용! 객체지향과 절차지향에 대해서 설명해볼까 하는데요! C언어와 C++의 가장 큰 차이는 C언어는 절차지향프로그래밍 언어이고 C++은 객체지향프로그래밍 언어이다 라고 설명 할 수 있습니다! 우선 우리가 지금까지 해온 프로그래밍은 "절차지향프로그래밍"이니 절차지향프로그래밍에 대해서 뭔지 부터 알아보도록 하겠습니다! 절차지향프로그래밍이란, 순서대로만 실행하는 프로그래밍이다 라고 설명하겠습니다. 우리가 썼던 C언어 코드를 보면, 위에서 아래로 흐르는 듯이 코드가 실행됩니다. 절차지향프로그래밍의 장점은 실행속도가 빠르다는 것이지만, 단점은 유지보수가 어렵죠, 코드의 위아래만 바꿔도 문제가 생길 가능성이 크니까요! 아직은 이해가 안될수 있..
([C++] 25강) 랜덤 rand, srand, rand함수최댓값 (C와 동일) 해당 내용은 C++에서와 C에서의 차이가 없습니다. 아래 글을 참조해주세요. 단! C++에서는 stdlib.h 및 time.h 헤더 대신에, cstdlib, ctime헤더를 인클루드 하도록 합니다! 그래도 우리는 C++이니까 printf, scanf대신에 cout cin 사용하기! ([C언어] 25강) 랜덤 (rand, srand함수와, rand함수 최댓값) 이번시간에는 게임개발에 절대 빠지지않는것! 랜덤에 대해서 배워보겠습니다 게임에는 랜덤이라는것이 엄청나게 많이 들어가는데요! 카드를 뽑는다던지 몬스터를 잡았을때 랜덤으로 일정확률 jeckl.tistory.com
([C++] 24강) 자동적 형변환, 명시적 형변환 (C와 동일) 해당 내용은 C++에서와 C에서의 차이가 없습니다. 아래 글을 참조해주세요. 그래도 우리는 C++이니까 printf, scanf대신에 cout cin 사용하기! ([C언어] 24강) "자동적 형변환"과 "명시적 형변환" 안녕하세요! 잭클입니다! 이번 시간에는 자동적 형변환과 명시적 형변환에 대해서 배울건데요 (약간 늦은 감이 있네요 뒤죽박죽 순서 죄송합니다..ㅠㅠ) 자 우선 어렵지 않으니 바로 코드부터 jeckl.tistory.com
([C++] 23강) 메모리 동적할당 new, delete 안녕하세요, 이번 시간에는 C++에서의 메모리 동적할당에 대해서 알아보겠습니다! C언어에서 메모리의 동적할당에 대한 개념을 읽어 보셨나요? 적어도 메모리 동적할당에 대해 알아보려면 "배열은 포인터다" 라는 개념정도는 알고 계셔야합니다! 자 배열을 하나 만들어봅시다! int arr[5]; int * ptr = arr; int 배열 arr을 5의 길이만큼 만들고 그 0번째 요소의 주솟값을 ptr에 할당했습니다! 그럼 ptr의 값 부분에 접근해서 arr내의 요소를 수정할수 있겠네요! 하지만 만약에 내가 고정적으로 5의 길이가 아니고, 사용자에게 입력받은 입력값을 변수에 담아서, 그 길이만큼 배열을 만들수 있을까요? 위와같은 코드로는 불가능합니다, 하지만 동적할당으로는 가능하죠! 그냥 단순 변수를 만든다던지, ..
([C++] 22강) 파일 입출력 - 쓰기 (fputs) (C와 동일) 해당 내용은 C++에서와 C에서의 차이가 없습니다. 아래 글을 참조해주세요. 그래도 우리는 C++이니까 printf, scanf대신에 cout cin 사용하기! ([C언어] 22강) 파일 입출력 - 쓰기 (fputs) 저번시간에 배웠던 fgets기억하시나요? https://jeckl.tistory.com/34 ([C언어] 21강) 파일 입출력 - 읽기 (fopen, fgets, fseek, feof, fclose) 이번 강좌에서는 파일 입출력을 배울겁니다. 파일 입출력이란 뭘.. jeckl.tistory.com