분류 전체보기 252

C++ 클래스와 객체

C++ 클래스와 객체 - C++ 객체는 멤버 함수(행동)와 멤버 변수(상태)로 구성된다. C++에서 클래스란 객체를 정의하는 틀 혹은 설계도로서, 클래스에 멤버 변수와 멤버 함수를 선언한다. 클래스와 객체 관계는 붕어빵 틀과 붕어빵의 관계와 비슷하다. 붕어빵 틀은 C++ 클래스에, 붕어빵은 C++ 객체에 비유된다. C++ 객체는 C++ 클래스라는 틀에서 찍어내어, 멤버 변수 메모리와 멤버 함수 코드를 가지고 있으며, C++ 프로그램이 실행되는 동안 실존하는 실체이다. 이러한 객체는 인스턴스(instance)라고도 불리운다. 가끔 클래스와 객체를 같은 의미로 섞어 부르기도 하지만, 대화에 혼란을 가져오므로 정확하게 사용하는 것이 좋다. 절대 클래스를 객체라고 부르지 않도록 주의하라! 다음 예제는 C++ 언..

C++/C++ 기본 2018.07.02

리액트 네이티브의 위험과 단점

리액트 네이트비의 위험과 단점 모든 것이 그렇듯 리액트 네이티브도 단점이 없진 않다. 리액트 네이티브가 모든 앱 개발 프로젝트에 적합한 것은 아니니 진행하려는 (혹은 진행하는) 프로젝트에 리액트 네이티브의 도입이 적합한지 잘 판단하고 사용하기를 바란다. 이제 시작한 지 얼마 안 되다 보니 리액트 네이티브의 가장 큰 위험 요소는 다름 아닌 성숙도이다. iOS를 지원하는 버전은 2015년 3월에 공개되었고, 안드로이드의 경우는 같은 해 9월에 공개되었다. 문서들은 아직 미흡하지만 지속적으로 개선되고 있다. iOS와 안드로이드의 일부 기능들은 아직 지원하지 않고 있으며 커뮤니티에서는 여전히 어떻게 개발하는 것이 바람직한 방법인지 찾고 있는 중이다. 희망적인 뉴스는 아직 구현되지 않은 API를 누구나 직접 구현..

리액트 네이티브의 이점

리액트 네이티브의 이점 리액트 네이티브는 기존의 크로스 플랫폼 애플리케이션 개발 방법과는 눈에 띄는 차이점이 있다. 바로 대상 플랫폼의 표준 렌더링 API를 사용한다는 점이다. 자바스크립트, HTML, CSS를 사용하여 모바일 앱을 만드는 기존의 방법들은 웹뷰를 이용하여 렌더링한다. 이러한 기존 방식은 앱을 실행할 때 유난히 성능이 떨어지는 단점이 있다. 게다가, 대상 플랫폼의 UI 요소들을 대개 이용하지 않는다. 이러한 프레임워크들은 네이티브 UI 요소들을 흉내 내려 하지만 결과는 어색하기 일쑤이다. 애니메이션과 같이 아주 섬세한 부분에 대한 리버스 엔지니어링은 엄청나게 노력이 많이 들고 쉽게 구식이 되어버린다. 그에 반해, 리액트 네이티브는 작성한 마크업을 플랫폼에 따라 그에 상응하는 진짜 네이티브 ..

상속 선언

상속 선언 자바에서는 슈퍼 클래스로부터 상속받은 서브 클래스를 선언할 때 extends 키워드를 사용한다. i.e.public class Person {...} public class Student extends Person {//Person을 상속 받는 클래스 Student 선언...} public class StudentWorker extends Student {//Student를 상속 받는 클래스 StudentWorker 선언...} Student 클래스는 Person 클래스의 특성을 물려받으므로 Person 클래스에 선언된 필드나 메소드를 다시 반복 선언할 필요가 없으며, 새롭게 추가된 특성을 표현하는 필드나 메소드만을 선언하면 된다. StudentWorker가 Student를 상속받으면 Pers..

Java/Java 기본 2018.07.02

상속의 개념

상속의 개념 현실의 세계에서 상속은 부모의 재산을 자손이 물려받는 것을 의미한다. 객체 지향에서 의미하는 상속은 재산 상속보다는 부모의 생물학적 특성을 물려받는 유전에 더 가깝다고 할 수 있다. 따라서 객체 지향에서 상속이 의미하는 바는 부모 클래스에 정의된 필드와 메소드를 자식 클래스가 물려받는 것이다. 상속이 이루어지면 자식 클래스는 부모 클래스에 정의된 필드와 메소드를 정의하지 않아도마치 정의한 것과 같은 효과가 있다. 한가지 분명히 하고자 하는 것은 상속은 클래스 사이의 상속이지 객체 사이의 상속이 아니라는 점이다. 자식 객체가 생성될 때 자식 클래스와 부모 클래스의 상속 관계에 따라 부모 클래스에 정의된 멤버를 가지고 생성된다. 1. 상속의 특성 1) 데이터와 함수의 중복성을 제거한다.2) 데이..

Java/Java 기본 2018.07.01

C++에서의 문자열

C++에서의 문자열 1. C 스트링 C 스트링(C-String)은 널 문자('\0' 혹은 0)로 끝나는 char 배열을 말하며, C 언어에서 사용하는 문자열 방식이다. C++에서는 C 언어와의 호환성 때문에 C 스트링을 그대로 사용한다. i.e.char name1[6] = {'G', 'r', 'a', 'c', 'e', '\0'}; //'\0'으로 끝나므로 문자열이다.char name2[5] = {'G', 'r', 'a', 'c', 'e'}; //'\0'으로 끝나지 않으므로 문자열이 아니다. C++ 응용 프로그램은 C 스트링을 다루기 위해 C 프로그래밍에서 사용해왔던 strcpy(), strcmp(), strlen() 등의 C 라이브러리 함수들을 그대로 사용할 수 있다. 이때 이나 헤더 파일을 includ..

C++/C++ 기본 2018.07.01

키 입력 받기

키 입력 받기 물론, C 언어의 gets, getc, getchar, scanf, getch 등의 함수들을 이용해서 입력을 받을 수 있다. 하지만, C++를 배우고 있으니 C++ 고유의 입력 방식에 대해서 알아보도록 하자. 1. cin과 >> 연산자를 이용한 키 입력 C++에서는 표준 입력 스트림인 cin과 >> 연산자를 이용하여 사용자로부터 키를 입력받는다. cin과 >> 연산자도 iostream 헤더 파일에 선언되어 있다. i.e.#include using namespace std; int main() { cout > width; //키보드로부터 정수 값 너비를 읽어 width 변수에 저장 cout > height; //키보드로부터 정수 값 너비를 읽어 height 변수에 저장 int area = w..

C++/C++ 기본 2018.07.01

namespace와 std::

namespace와 std:: 이름 공간에 대한 이해를 돕기 위해 한 가지 예를 들어 보자. 현재 우리 아파트 단지에는 '김철수'라는 이름을 가진 사람이 여럿 살고 있다. 그러므로 우리 아파트 단지에서 '김철수'를 찾고자 하면, 몇 동에 사는 '김철수'인지 구분해야 한다. 1동에 사는 김철수를 "1동::김철수"라고 나타낸다고 했을 때, 1동이 바로 C++에서의 이름 공간이다. 1. namespace 일상 생활뿐 아니라 C++ 프로그래밍 과정에서 이름(identifier)이 충돌하는 경우가 있다. 다음은 이름 충돌이 발생하는 대표적인 경우이다. -프로젝트를 여러 명이 나누어 개발하는 경우- 다른 사람이 작성한 소스 코드나 목적 파일을 가져와서 사용하는 경우 프로젝트를 여러 명이 나누어 개발하는 경우, 한 ..

C++/C++ 기본 2018.07.01

Annotation

Annotation - 어노테이션은 Java 5에 추가된 기능이다! - 클래스나 메소드 위에 붙으며, '@'로 시작 - 어노테이션을 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 때 어노테이션의 유무나 어노테이션에 설정된 값을 통하여 클래스가 좀 더 다르게 실행되게 할 수 있다. - 어노테이션은 자바가 기본으로 제공하는 것도 있고, 사용자가 직접 작성한 커스텀 어노테이션(custom annotation)도 있다. - 커스텀 어노테이션을 JVM이 실행시에 감지할 수 있도록 하려면 "@Retention(RetentionPolicy.RUNTIME)"를 붙여줘야 한다. i.e.@Retention(RetentionPolicy.RUNTIME)public @interface count100 { ... }

Java/Java 기본 2018.06.29