일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- length
- memory
- flutter
- Unity
- inheritance
- wpf
- parameter
- digitalRead
- UNO
- Barcode
- preprocessing
- sensor
- java
- Read
- SERIAL
- atmega328
- Contour
- Class
- aduino
- compare
- APP
- public
- mfc
- Overloading
- Encapusulation
- Pointer
- stream
- Binary
- Android
- file access
- Today
- Total
목록Class (18)
폴크(FOLC)
# 접근 제어자 > 정보의 은닉을 위해서 이용, 최소한의 정보만으로 클래스를 운용 > 총 4가지 ( private, public, protected, default ) - private : 클래스 멤버는 외부로 공개되지 않음. ( 외부 접근 불가 ) - public : 클래스 멤버는 외부로 공개 됨 ( 외부 접근 가능 ) - protected : 상속받은 클래스 멤버는 접근 가능, 같은 패키지 접근 가능 ( 외부 접근 불가 ) - default : 같은 패키지에 속하는 멤버에서만 접근 가능 ( 기본값 ) > 접근 범위 - public > protected > default > private 순서 # 기타 제어자 > 특징 - 클래스에 final 과 abstract 를 같이 쓸 수 없다. - 메소드에 sta..
# 정적 멤버 ( static ) > 클래스에 존재하지만 객체별로 생성하지 않고 객체들이 공유하는 멤버 > 1개만 관리 > 접근 가능 ( 클래스 멤버 함수 / 프렌드 ) > 모두 접근 가능 ( 정적 멤버를 public 으로 처리 ) > 초기화는 클래스명::정적멤버 # 정적 멤버 함수 > 객체를 생성하지 않고도 클래스 명으로 호출 가능 ( 클래스명.정적멤버함수 ) > 객체를 생성하지 않으므로 this 포인터가 없다. > 정적 멤버 변수만 사용 가능 # 상수 멤버 ( const ) > 한 번 초기화 하면 그 값을 변경하지 못하는 변수 > const 키워드 이용 ( 처음에 ) > 클래스 전체에서 이용하는 중요한 상수 # 상수 멤버 함수 > 호출된 객체의 데이터를 변경할 수 없는 함수 > const 키워드 이용..
# 특정 클래스의 멤버 변수(private, protected) 에 접근하기 위해서는 public 함수를 통해서 가능 > 수많은 멤버 변수를 접근하기 위해서 public 함수를 생성하기에는 무리 > 모든 멤버 변수를 직접 접근하기 위해서 friend 키워드 이용 ( 함수, 클래스 ) # 필요 > 멤버 함수를 호출하거나 멤버 변수에 직접 접근해야 하는 상황 - 연산자 재정의 과정에서 자주 발생 # 프렌드 함수 > friend 키워드를 이용하여 선언 ( 클래스 멤버 X ) - friend return_value functionName(XXXX XXXX); > 멤버 변수에 직접 접근 가능 # 프랜드 멤버 함수 > friend 키워드를 이용하여 선언 ( 클래스 멤버 X ) - friend return_value..
# 오버로딩 ( overloading ) > 함수의 이름을 동일(중복)하게 정의 하는것 ( 객체지향 - 다형성 ) > 함수의 이름은 1개만 선언 가능하지만 시그니처가 다르면 가능 - 시그니처 : 함수 선언부에 명시되어 있는 매개변수 리스트 -> 함수 이름의 종류를 최소화 하여 생성 가능 -> 함수 호출시에 매개변수나 타입을 신경쓰지 않고 호출 가능 # 조건 > 함수 이름이 같아야 한다. > 매개변수 개수와 타입이 달라야 한다. - 반환 타입이 다르더라도 시그니처가 같다면 정의 할 수 없다. # 소스 코드 # include class TEST { public: void SUM(int a, int b) { return (a + b); } float SUM(float a, float b) { return (a..
# 오버로딩 ( overloading ) > 함수의 이름을 동일(중복)하게 정의 하는것 ( 객체지향 - 다형성 ) > 함수의 이름은 1개만 선언 가능하지만 시그니처가 다르면 가능 - 시그니처 : 함수 선언부에 명시되어 있는 매개변수 리스트 -> 함수 이름의 종류를 최소화 하여 생성 가능 -> 함수 호출시에 매개변수나 타입을 신경쓰지 않고 호출 가능 # 조건 > 함수 이름이 같아야 한다. > 매개변수 개수와 타입이 달라야 한다. - 반환 타입이 다르더라도 시그니처가 같다면 정의 할 수 없다. # 소스 코드 public class TEST { public int SUM(int a, int b) { return (a + b); } public float SUM(float a, float b) { return ..
# 생성자 ( constructor ) # 동적 할당으로 객체를 생성하게 되면 독립된 메모리 공간에서 data를 관리 > 객체 내부에 존재하는 data 들에 대한 초기화를 별도로 진행하지 않으면 자동 초기화 수행 - 0 또는 null, false > 외부에서 일반적인 초기화 과정을 진행하지 못함 - 내부 data 에 접근하지 못하는 (private) 경우 때문에 -> 필요 : 객체 생성 후 필드를 초기화 하기 위한 접근 가능한 public 함수 > 객체의 생성과 동시에 data 초기화 해주는 함수 : constructor > 객체의 이름과 동일하며 () 함수 형태를 갖는다. # 특징 > 매개변수를 전달해서 초기화 진행 가능 - 필드 자체적으로 초기화 진행 가능 ( default constructor ) ..
# 메소드(행동)와 필드(상태)를 포함한 확장된 구조체 형태 > 객체 지향 개념의 중심 ( 행동과 상태 ) > 사용자 정의 타입 ( class 키워드 이용 ) > 추상화, 갭슐화, 은닉화, 상속성, 다형성 등의 특징을 갖음 > 객체 : 사용자 정의 타입을 설계해 놓은 상태 ( 선언 하지 않은 상태 ) > 인스턴스 : 사용자 정의 타입의 객체를 선언하여 메모리에 올려놓은 상태 - 메모리에 독립된 공간에서 관리됨 # 접근 제어 지시자 > private : 해당 객체 내에서만 접근 가능한 변수 / 함수 > protected : 해당 객체를 상속한 하위(파생) 클래스에서만 접근 가능한 변수 / 함수 > public : 모든 객체에서 접근 가능한 변수 / 함수 # 기본 형태 접근 제어 지시자 class 객체이름 ..
# 객체의 수명이 끝나는 시점에 컴파일러에 의해 자동으로 호출되는 함수 > 객체의 이름과 동일한 함수명으로 앞에 물결(tilt : ~ ) 를 붙여서 표기 # 특징 > 매개변수를 가지지 않는다. > 반환값이 없지만 void 로 선언하지 않는다. > 소멸자는 무조건 1개만 정의 할 수 있다. > const, volatile. static 으로 정의 할 수 없다. # 호출 > 프로그램 종료 : 데이터 영역에서 객체가 삭제되는 상황 > 함수의 블록/임시 블록 종료 : 스택 영역에서 객체가 삭제되는 상황 > delete 키워드 : 힙 영역에서 객체가 삭제되는 상황 # 소스 코드 TEST1::TEST1() { } TEST1::~TEST1() { // 소멸자 } int main(void) { TEST1 *pTTT1 ..
# 기본 생성자 ( default constructor ) > 초기값을 설정하는 매개변수가 없다. > 매개변수가 없는 상태에서 0 또는 NULL, 그리고 _T("") 등으로 초기값 설정 > 객체 생성시 초기값을 명시하지 않으면 컴파일러가 자동적으로 초기값 설정 # 특징 > 생성자가 정의되어 있지 않은 경우에만 컴파일러가 자동으로 제공 > 초기값을 설정하지 않은 상태로 객체를 생성하려면 기본 생성자를 직접 정의 > 생성자를 1개 이상 정의 하려면 함수 오버로딩 기법을 이용하여 정의 # 정의 방법 > 함수 오버로딩 방법 : 생성자에 매개변수 개수와 자료형을 중복되지 않게 정의 > 디폴트 인수 방법 : 모든 매개변수에 초기값을 명시하여 정의 # 소스 코드 TEST1::TEST1() { } TEST1::TEST..
# 생성자 ( constructor ) # 동적 할당으로 객체를 생성하게 되면 독립된 메모리 공간에서 data를 관리 > 객체 내부에 존재하는 data 들에 대한 초기화를 수행하기 전에는 사용 불가 > 외부에서 일반적인 초기화 과정을 진행하지 못함 - 내부 data 에 접근하지 못하는 (private) 경우 때문에 -> 필요 : 객체 생성 후 사용하기 직전까지 멤버를 초기화 하기 위한 접근 가능한 public 함수 > 객체의 생성과 동시에 data 초기화 해주는 함수 : constructor > 객체의 이름과 동일하며 () 함수 형태를 갖는다. > 접근 지정 제어자를 public 로 설정 # 특징 > 매개변수를 전달해서 초기화 진행 가능 > 여러개의 생성자 함수 오버로딩 처리하여 초기화 진행 가능 > 반..
# 함수와 변수를 포함한 확장된 구조체 형태 ( C 언어의 구조체의 확장 개념 ) > 사용자 정의 타입 ( class 키워드 이용 ) > 객체 지향 개념의 중심 ( 상태와 행동 ) > 추상화, 갭슐화, 은닉화, 상속성, 다형성 등의 특징을 갖음 > 객체 : 사용자 정의 타입을 설계해 놓은 상태 ( 선언 하지 않은 상태 ) > 인스턴스 : 사용자 정의 타입의 객체를 선언하여 메모리에 올려놓은 상태 - 메모리에 독립된 공간에서 관리됨 # 기본 형태 class 객체 이름 { 접근 제어 지시자( private, protected, public) : 변수 - int AAA; 함수 원형 - int BBB(int CCC); 접근 제어 지시자( private, protected, public) : 함수 원형 - voi..
# 기본 기능 > 클래스 내부에서 호출된다. > 클래스 외부에서도 호출이 가능하다. > 함수의 이름이 곳 포인터가 된다. ( 시작 주소 ) # 함수 디폴트 파라미터 > 함수에 파라미터를 전달하는 기본값을 설정 ( Varargs, ... 등 이용) > 우선 순위 위치 순서대로만 지정할 수 있다. ( 우->좌 ) # 함수 오버로딩 ( 다형성 ) > 함수 이름은 동일하고 파라미터 개수와 리턴값이 다름 ( 시그니처 ) # 함수 오버라이딩 ( 다형성 - 상속 관련 ) > 함수 이름과 파라미터 개수와 리턴값이 같음 ( 재정의 ) > 부모의 함수와 동일한 이름을 갖는 함수이지만 내용이 다름 # 예제 소스 class TEST_Car { private String _Name; private int _Year; TEST_..
# JAVA 프로그램은 JVM(가상머신)을 통해서 실행 > JVM 은 운영체제(OS) 에게 프로그램을 수행하기 위해서 메모리 공간을 할당 받는다. > 메소드 영역 : 클래스와 변수들이 저장되는 공간 - .class 파일을 load 해서 관련 정보를 갖고 있는다. > 스택 영역 : 메소드들의 스택 프레임이 저장되는 공간 - 메소드가 호출되는 시점에 지역 변수와 매개 변수의 정보를 갖고 있는다. - 푸시로 데이터를 쌓고 팝으로 데이터를 꺼내온다. ( 후입선출 - LIFO ) > 힙 영역 : 인스턴스 변수가 저장되는 공간 ( 생성/삭제 ) - new 키워드를 이용해서 확보됨. # 메모리 할당 > User 에 의해서 힙 영역에 특정 공간을 관리하기 위한 요청이 발생 > new 명령어를 이용해서 할당 받고 del..
# 함수 # 함수는 특별한 목적을 수행하기 위해서 설계된 명령문들의 모임 > 표준 함수, 사용자 정의 함수 > 반복적인 작성을 피할 수 있고 반복적인 수행이 가능 > 기능별 호출이 용이하며 모듈화가 가능하여 가독성이 높아진다. # 정의 > void functionName(X, Y) { } > 반환값 ( void ) : 모든 작업을 마치고 결과를 반환하는 값 ( 0개 or 1개 이하 ) > 함수명 ( functionName ) : 호출하기 위한 이름 > 전달인자 ( X, Y ) : 호출할때 전달되는 값 ( N개 ) > 함수 몸체 { } : 명령문들의 모임 # 특징 > 함수를 사용하기 위해서는 함수를 클래스 내부에 그대로 작성 한다. # 재귀호출 > 함수 내에서 자기 자신의 함수를 재 호출하는것 > 함수를 ..
# 기본 # 특징 : 객체 지향 언어로 가상 머신( JVM : Java Virtual Machine )에서 동작 > 장점 - 운영체제와 독립적으로 실행 가능 ( JVM 덕분 ) - 필요한 기능만 제공하여 단순하고 배우기 쉽다. - 자동 메모리 관리가 되어서 안정성이 높다. - 연산자 Overloading 금지 - 제네릭 기능을 제공하여 가독성이 높다. > 단점 - JVM 환경에서만 실행되기에 속도가 조금 느리다. - 예외처리 관련하여 User 의 작업이 필요하다. - 코드 작성 길이가 조금 더 길다. # 구조 > class main() { 영역 > int AAA = 0; 영역 > public static void main(String[] args) { System.out.println(""); } } 영..
# OOP(Object Oriented Programming) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 > 컴퓨터 프로그램을 여러 개의 독립된 객체들의 모임으로 봄. > 각각의 객체는 서로 메시지를 주고 받고 데이터를 처리한다. # OOP 는 프로그램을 유연하고 변경이 쉽게 만든다. > 대규모 소프트웨어 개발에 많이 사용 > 프로그래밍을 더 배우기 쉽게 하고 개발 및 유지 보수가 간편 > 보다 직관적인 코드 분석을 가능 # 객체의 단위를 대표하는 것은 class, struct > class 와 struct 는 매우 흡사하며 운영 방법은 동일 > 한가지 차이점은 접근 지정자의 적용 방식 - class : private ( 지정자를 설정하지 않으면 기본적으로 반영됨 ) - struct : publ..
1. 변수 # var 라는 키워드를 사용 or 타입을 직접 선언하여 사용 # 이름의 첫 글자는 소문자, 접근 지정자[ _XXX (underbar) 를 붙이면 private ] # 참조 (reference)를 저장한다. > 자료형이 다른 경우 동일한 변수를 이용하려면 - dynamic 키워드를 사용 2. 컬렉션 # List, Map, Set 제공 > List items = ['사자', '호랑이', '고양이']; > Map items_map = { 'Hong' : 'hi', 'Gil' : 'hello' , 'Dong' : 'world'}; > Set items_set = {'Hong', 'Gil', 'Dong'}; 3. 클래스 # 생성시에 new 키워드 생략 # 접근 지정자는 기본적으로 public > _X..
1. 포인터 # 메모리 주소를 가지고 있는 변수 # new 키워드 사용 # & 연산자와 new 키워드에 return 값을 갖음 ( 주소 값 ) # 동일한 자료형을 물리적인 메모리 공간에 연속으로 할당 받아서 이용한다. # 구조체/클래스를 이용해서 생성한 Object의 주소를 의미한다. > int iDataValue = 100; > int *pPointer_INT = &iDataValue; > float fDataValue = 1234.f; > float *pPoint_FLOAT = &fDataValue; > struct STRUCTTestSampleData > { > bool a; int b; float c; > } > > STRUCTTestSampleData *pPointer_STRUCT = new S..