분류 전체보기 250

생성자

생성자 1. 생성자란? 객체를 생성할 때에 객체 그 자체와 객체의 멤버 변수등을 초기화 시켜줄 필요가 있다. C++에서 클래스는 객체가 생성될 때 자동으로 실행되는 생성자(constructor)라는 특별한 멤버 함수를 가지고 있다. 이 생성자를 사용하게 되면 객체를 생성할 수 있으며, 생성과 동시에 객체를 초기화 시켜 줄 수가 있다. 또한, 생성자를 이용해서 객체의 멤버 변수들을 원하는 값으로 초기화 시켜 줄 수도 있다. 한 클래스에 여래 개의 생성자를 넣을 수 있다. 그러나, 객체를 생성할 때에는 그 중에 오직 하나만 사용해서 생성한다. 어떤 생성자를 사용할 지는 객체를 생성할 때에 직접 선택할 수 있다. i.e.class Circle {......Circle(); //생성자의 이름은 클래스의 이름과 ..

C++/C++ 기본 2018.07.04

자바의 장단점

자바의 특징 1. 자바의 장점? 1) 완벽한 캡슐화 이 캡슐화에 의해 프로그램 자체의 보안성 등이 더욱 강화된다. 2) 휴대성(portability) 자바 응용 프로그램은 JVM에 종속적이지만 플랫폼 독립적이다. 따라서, 한번 작성을 하면 JVM이 있는 어느 플랫폼에서든지 작동을 한다. 3) 타입 데이터 타입이 있고 타입 변환이 불가능하다는 것은 자바의 강한 장점이다. 실제로, 코딩을 하다 보면 데이터 타입이 변하지 않았으면 하는 상황들이 생기곤 한다. 특히 주어진 데이터를 분석하는 데이터 과학 분야에서는 타입 변환이 안되는 이 자바의 특성이 매우 중요하다고 한다. 4) 객체 지향적 특징 객체 지향 언어인 자바는 절차 지향 언어보다 더 다양하고 창의적인 논리적 디자인이 가능하다. 5) 쉽게 배울 수 있다..

Java/Java Tips 2018.07.04

상속과 생성자

상속과 생성자 1. 서브 클래스와 슈퍼 클래스의 생성자 호출 및 실행 관계 상속 관계에 있는 서브 클래스와 슈퍼 클래스는 각각 생성자를 가지고 있다. 두 생성자들의 관계에 대해서 일반적으로 혼동하는 부분에 대해서 알아보도록 하자. Q1. 서브 클래스의 인스턴스가 생성될 때 서브 클래스의 생성자와 슈퍼 클래스의 생성자가 모두 실행되는가? 아니면 서브 클래스의 생성자만 실행되는가? A1. 둘 다 실행된다. 생성자는 인스턴스를 초기화할 목적으로 사용되므로 서브 클래스의 생성자는 서브 클래스 내의 멤버를 초기화하거나 필요한 초기화 작업을 수행할 필요가 있고, 슈퍼 클래스의 생성자는 슈퍼 클래스의 멤버를 초기화하거나 필요한 초기화 작업을 수행할 필요가 있기 때문이다. Q2. 서브 클래스의 인스턴스가 생성될 때 서..

Java/Java 기본 2018.07.03

상속과 접근 지정자

상속과 접근 지정자 자바의 접근 지정자에는 총 4가지 종류가 있다. 그렇다면, 슈퍼 클래스 멤버에 선언한 4가지 유형의 접근 지정자에 대해 다른 클래스에서 어떤 접근이 허용되는지 알아보도록 하자. - private슈퍼 클래스의 멤버에 private 접근 지정자가 지정되면 서브 클래스라도 자기 멤버 같이 직접 사용할 수 없다. -protected슈퍼 클래스의 protected 멤버는 두 가지 상황에서 접근을 허용한다. 1) 같은 패키지에 속한 다른 클래스에 접근을 허용한다.2) 같은 패키지든 다른 패키지든 상속을 받는 서브 클래스에 접근을 허용한다. -public슈퍼 클래스의 멤버가 public이면 서브 클래스뿐만 아니라 어떤 클래스에서도 접근할 수 있다. 같은 패키지에 있든 다른 패키지에 있든 상관없다...

Java/Java 기본 2018.07.03

서브 클래스의 객체와 멤버 사용

서브 클래스의 객체와 멤버 사용 A라는 클래스를 상속받는 클래스 B가 있다고 하자. 클래스 A로 객체 a를 만들고, 클래스 B로 객체 b를 만들었을때, 객체 a는 오직 A의 멤버 변수와 멤버 메소드만을 사용할 수 있다. 그에 반해, 객체 b는 클래스 B의 멤버 변수와 메소드 뿐 아니라 클래스 A의 멤버 메소드와 변수까지 사용할 수 있다. 상속을 받았기 때문에, 클래스 B는 클래스 A의 멤버를 모두 가지기 때문이다. 서브 클래스 객체를 생성하면, 그 안에는 서브 클래스의 멤버들 뿐 아니라 슈퍼 클래스의 멤버들도 함께 생성된다.

Java/Java 기본 2018.07.03

객체 생성과 객체 활용

객체 생성과 객체 활용 1. 객체 생성과 객체 이름 객체는 클래스 모양과 기능을 그대로 간직한 실체로서 이름을 가진다. 기본 타입의 변수를 선언하는 것과 같은 방법으로 객체를 생성하고 이름을 붙인다. 다음은 donut과 pizza라는 이름을 가진 Circle 클래스 객체를 생성하는 코드이다. i.e.int moiney; //int 타입의 변수 money 생성Circle donut; //Circle 클래스의 객체 생성. 객체의 이름은 donutCircle pizza; //Circle 클래스의 객체 생성. 객체의 이름은 pizza 변수가 생성되면 메모리에 변수 공간이 할당되는 것처럼, 객체가 생성되면 클래스 크기의 메모리가 할당된다. 자바에 익숙한 개발자들에게는 C++의 객체 생성 방식이 처음에는 매우 낯설..

C++/C++ 기본 2018.07.02

c++ 클래스 만들기

C++ 클래스 만들기 1. 클래스 만들기 C++에서는 class 키워드를 이용하여 클래스를 선언한다. C++ 클래스는 C 언어의 구조체와 같이 개발자가 정의하는 새로운 데이터 타입이다. C++ 클래스 내에는 멤버 변수와 멤버 함수가 선언될 수 있다. 아래의 예와 같이 클래스의 내용에 대해서 선언하는 부분을 클래스 선언부라고 부른다. i.e.class Circle {public:int radius; //멤버 변수double getArea(); //멤버 함수}; 클래스 선언부는 class 키워드로 클래스를 선언하며 시작한다. 자바와는 달리 각 멤버에 대한 접근 지정자를 한꺼번에 지정한다. 또한, 클래스 선언부는 블록이 끝난 후에 반드시 세미콜론으로 끝난다. 클래스를 선언하였으니 이제 구현을 할 차례이다. 선..

C++/C++ 기본 2018.07.02

JVM이란?

JVM이란? JVM을 어떻게 정의할 것인가 고민하기에 앞서 기본적 JVM 원어부터 알아보자. JVM은 그 이름에서 자신의 모든 특성을 담고 있다. JVM은 먼저 Java에서 출발한다. 그리고 Virtual이라는 단어를 통해서 알 수 있듯이, JVM은 물리적인 형태가 아닌 소프트웨어로서 하나의 개념으로 존재한다. 그리고 JVM은 독자적으로 작동할 수 있는 메커니즘과 구조를 가지고 있다. 즉, 하나의 축약된 컴퓨터와 같은 의미에서 기계라는 의미의 단어 "Machine" 이 조합된 것이다. 결국 JVM은 정의된 스펙을 구현한 하나의 독자적인 프로세스 형태로 구동되는 Runtime Instance라고 할 수 있다. 따라서 JVM의 역할은 개발자들이 작성한 자바 프로그램이나 웹 애플리케이션 서버 등을 구별하지 않..

Java/JVM 2018.07.02

C++ 클래스와 객체

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

C++/C++ 기본 2018.07.02

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

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