프로그래밍(42)
-
알고리즘:Recursive Backtracking
미로를 생성하는 알고리즘 중 가장 간편해 보이는 Recursive Backtracking 알고리즘. Recursive Backtracking 알고리즘의 동작은 아래와 같습니다. (내가 보기에는...)1. 무작위로 한 곳을 선택합니다.2. 선택된 위치에서, 인접한 곳(상,하,좌,우)을 랜덤하게 탐색합니다.3. 탐색한 곳의 벽이 전부 막혔다면 뚫고 그 장소로 이동합니다.4. 인접한 곳에 이동할 곳이 없다면, 이전 위치로 돌아 갑니다.5. 위 내용을 반복하여 모든 장소를 방문하면 미로가 완성 됩니다. 예) 개발은 MFC 환경에서 그리드를 이용했습니다.(후회 중...)그리드 연결 및 표 생성은 생략하며, 알고리즘의 주요 부분만 포스팅 소스코드 1. 미로를 생성하기 위해 BackTracking() 함수를 작성하였..
2014.03.11 -
바인딩과 가상함수
▶ 바인딩(Binding)- 바인딩이란 함수 호출과 실제 함수를 연결하는 방법이다.- 정적 바인딩과 동적 바인딩이 있다.- 기본적으로 정적 바인딩을 수행한다.- 동적 바인딩은 virtual 예약어를 사용해서 함수를 정의해야 한다. * 정적 바인딩 (Static Binding)- 정적 바인딩은 컴파일 타임에 호출될 함수를 결정한다.- 객체나 타입을 보고 호출할 함수를 결정한다. * 동적 바인딩 (Dynamic Binding)- 동적 바인딩은 런 타임(실행 중)에 호출될 함수를 결정한다.- virtual 예약어를 사용해서 가상함수를 정의해야 한다.- 호출 함수 결정은 객체의 가상함수 Table을 사용한다. * 가상함수 (Virtual Function)- Virtual 예약어를 붙여 정의된 함수는 런 타임 시..
2014.03.03 -
오버라이딩, 오버로딩과의 차이점
▶ 오버라이딩(Overriding)- 오버라이딩은 함수의 재정의를 말한다. - 상속받은 자식 클래스에서 부모 클래스의 멤버함수를 재정의 하는 것을 말한다.- 오버라이딩을 할 때는 함수의 원형은 부모 클래스와 일치해야 한다.- 이미 사용하고 있는 클래스의 멤버함수를 수정할 경우, 그 클래스를 건드리지 않고 update나 upgrade를 할 경우에 사용된다.(펌 : 네이버 카페-취업스토리) 오버라이딩은 객체지향의 특성 중 하나인 다형성을 위해 제공되는 상속에서의 함수의 재 정의를 말합니다. 아래 오버라이딩의 예를 위해 간단한 클래스를 작성하였습니다. //부모클래스입니다class pitching{public: void speed() { cout //피칭클래스를 상속받는 프로클래스입니다class pro:publ..
2014.02.28 -
오버로딩
오버로딩 오버로딩이란 프로그래밍 언어에서 한 객체가 상황에 따라 다른 의미를 가질 수 있도록 해주는 특색을 의미한다. 이 용어는 피연산자의 데이터 형식이나 클래스에 따라 다르게 행동하는 연산자와 관련하여 가장 자주 사용된다. 예를 들어, x + y는 x와 y가 단순히 정수냐 혹은 복합적인 데이터 구조냐에 따라 다른 의미를 가질 수 있다. 모든 프로그래밍 언어가 오버로딩을 지원하는 것은 아니며, C++와 자바 등과 같은 대부분의 객체 지향형 언어의 특색이다. 결국 오버로딩이란 다형성의 한 형식이라 할 수 있다. (구글 펌) 쉽게 설명하면 오버로딩은 하나의 함수 명으로 여러 가지 동작을 구현해서 사용하는 하나의 방법입니다. 오버로딩을 사용하면 여러 함수명을 사용하지 않고 함수를 관리 할 수가 있습니다.예로 ..
2014.02.26 -
App 개발 : 잠금화면- 원격잠금[마무리]
기능- 지정한 문자가 오면 화면을 잠근다. 동작- 기기권한 획득- 서비스 실행- 문자 받으면 비교 후 잠금 SMS 리시버와 서비스, DPM에 관한 내용은 앞의 포스팅을 참고. 소스- 앞서 포스팅한 SMS 리시버와 DPM 예제를 그대로 이용.- EX_DPM 예제에 SMS 리시버 포스팅에 사용된 서비스를 가져옴.- SMS 리시버 호출 부분만 변경. 변경된 부분 소스코드(수정_2014.05.21] 아래는 App 시현 영상입니다.
2013.04.30 -
App 개발 : 잠금화면- 원격잠금[DevicePolicyManager]
DPM이 제공하는 기능들- DPM이 제공하는 기능 필요한 기능- 위 기능들 중 원격잠금을 사용하기 위한 몇 가지.1. 기기권한 Setting : 기기권한 여부, 기기권한 획득, 기기권한 해제- DPM 기능들을 사용하기 위해 기기 권한을 획득해야 함.2. 화면잠금 : LockNow- 화면을 잠그는 DPM 메소드3. 비밀번호 : 비밀번호 사용 상태 확인, 비밀번호 설정 액티비티 호출- 원격잠금 사용을 위해 현재 단말기에서 비밀번호가 사용 중인지 확인 프로젝트 생성- 안드로이드 프로젝트를 생성합니다.- 저는 ex_dpm으로 생성하였습니다. 기기권한 환경설정- 기기권한을 사용하기 위해서는 안드로이드 프로젝트를 생성 후 xml, 리시버 등록, 리시버 클래스 생성 3가지를 우선 설정해야 한다. 1. xml 만들기 ..
2013.04.29