More Programmings

요약- EDC에서 group은 '충돌', '이해할 수 없는 동작' 등을 고민을 할 필요가 없음. EDC 작성시 group의 구성- parts와 program 두가지 모두 포함하고 있어야 함.- parts: 화면을 구성하는 part의 상위 블록- programs: part에 움직임을 부여할 수 있는 program의 상위 블록 collections { group { parts { part{} part{} part{} part{} } programs { program{} program{} program{} program{} } } } group의 요소1. name: [group name];- group의 이름을 지정- elm_layout_file_set() api의 3번째 인자- c file에서 group의 ..
Tizen에서 EDC를 사용하는 이유- Edc script를 이용하여 layout을 잡고 image 배치 후 각종 작업을 통해 component의 설계가 가능- 4~5줄의 script를 이용하여 animation 탑재 가능 EDC Script 구조 collections { group { parts { part{} part{} part{} part{} } } } - Collection: 가장 처음으로 마주하게 되는 block- group이 포함됨(1개 이상 포함)- 비슷한 종류의 group들을 하나의 collection으로 모아서 관리 가능- group : 화면을 구성하는 완결된 하나의 집합- 일반적인 compile시 필요한 구조- collections-group-parts-part- collections..
OCP(Open-Closed-Principle)- 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다. 데코레이터1. 데코레이터의 수퍼클래스는 자신이 장식하고 있는 객체의 수퍼클래스와 같다.2. 한 객체를 여러 개의 데코레이터로 감싸는 것이 가능3. 자신이 감싸고 있는 객체와 같은 수퍼클래스를 가지고 있기 때문에 원래 객체의 자리에 데코레이터를 넣어도 사용 가능4. 자신이 장식하고 있는 객체에게 어떤 행동을 위임하는 것 외에 원하는추가적인 작업 수행 가능
기상 모니터링 애플리케이션 개요- 현재 조건(온도, 습도, 압력)을 보여준다.- 기상 통계를 낸다.- 간단한 기상 예보 표시 1. 현재 알고 있는 내용- 세 가지 측정값에 대한 메소드a. getTemperature()b. getHumidity()c. getPressure() - 새로운 기상 데이터 나올시마다 meaurementsChanged() 수행- display 갱신 필요- 시스템 확장 - subject 객체에서 일부 data 관리- subject 객체에서 data가 달라지면 observer에 해당 소식이 전해짐- subject의 data 변경시 갱신 내용을 전달 받음 옵져버 패턴의 정의- 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대..
1. 디자인 패턴이 생겨난 과정- 특정 기능들을 상속받는 클래스에 영향을 끼치는 것을 방지하기 위해 생겨남- 인터페이스에 대한 고민 : 인터페이스의 경우 스펙이 일부가 변경되면 전체적으로 변경해야되는 사태가 발생 2. 문제 파악- 바뀌는 부분은 미리 뽑아서 캡슐화- 행동과 관련된 인터페이스는 행동과 관련된 것들만 모아서 따로 구현 3. 디자인의 원칙- 구현이 아닌 인터페이스에 맞추어서 프로그래밍을 한다- 상속보다는 구성을 활용한다. 4. 통합- 상위 클래스에 구현되어 있는 함수들은 서브 클래스에서 제거 스트레티지 패턴(strategy Pattern): 알고리즘군을 정의하고 각각을 캡슐화해서 교환 사용이 가능하도록 만든다. 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘 변경이 가능하다.
1. MVC 가. 소프트웨어 공학에서 사용하는 설계 패턴 중 하나 나. Model-View-Controller 구조로 되어 있음 다. 구조 1) Model : business logic / data (java) 2) view : gui / design / presentation(jsp) 3) controller : view-model 상호 관리(jsp) 2. 구성 이유 가. 비즈니스 로직과 디자인의 분리 나. 비즈니스 로직의 재사용 : 디자인 변경에 대해 독립적 다. 서블릿/jsp에서 비즈니스 로직의 분리가 필요 3. 프로젝트 구성 가. servlet-context.xml : 스프링 설정 파일 나. view는 view folder 안에 저장 다. java 밑에 있는 controller package 확인..
class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); }; class AtomicClock: public TimeKeepeer {}; class WaterClock: public TimeKeeper {}; class WristWatch: public TimeKeeper {}; 시간 접근자에 접근을 하려고 함 TimeKeeper* getTimeKeeper(); //TimeKeeper에서 파생된 클래스를 통해 동적으로 할당된 객체의 포인터를 반환 기본 클래스의 소멸자로 인해 클래스가 삭제가 되면 파생 클래스는 소멸되기 때문에 객체의 신세로 바뀌게 된다. 따라서 에러가 발생될 수 있음 이를 해결하기 위해서는 virtual을 포함하여 가상 소멸자를 만들면 이를 해결..
HomeForSale h1; HomeForSale h2; HomeForSale h3(h1); //h1을 봉사하려 합니다 컴파일 되면 안된다 h1 = h2; // h2를 복사하려 합ㄴ다 컴파일 되면 안된다 class Uncopyable { protected: // 파생된 객체에 대해서 Uncopyable() {} //생성과 소멸을 ~Uncopyable() {} //허용합니다 private: Uncoptable(const Uncopyable&); // 하지만 복사는 방지합니다. Uncopyable& operator = { const Uncopyable&); }; class HomeForeSale: private Uncopyable { // 복사 생성자도, ... //복사 대입 연산자도 }; //이제는 선언되..
클래스가 비어 있지만 비어 있지 않은 경우가 존재한다. c++에서 빈 클래스를 지나갈 때가 이런 경우 중에 하나 이다. 클래스 안에 직접 선언하지 않더라도 선언되는 것 1. 복사 생성자 2. 복사 대입 연산자 3. 소멸자 class Empty { public: Empty() {... } //기본 생성자 Empty(const Empty& hrs) { } //복사 생성자 ~Empty() { } //소멸자 Empty& operator=(const Empty&rhs){ } // 복사 대입 연산자 }
int x; 초기화를 하지 않으면 이 x의 값이 어떤 값인지 알 수 없다 stl의 벡터 부분의 경우 반드시 초기화가 보장이 된다 int x = 0; //int의 직접 초기화 const char * text = "A C-style string"; //포인터의 직접 초기화 double d; //입력 스트림에서 읽음으로써 초기화 수행 class PhoneNumber{...}; class ABEntry { //ABEntry = "Address Book Entry" public: ABEntry(const std::string&name, const std::string& address, const std::list& phones); private: std::string theName; std::string theA..
플로쨔응
'More Programmings' 카테고리의 글 목록 (3 Page)