본문 바로가기

전체 글

(67)
iOS) NSCoding과 Archive를 통한 데이터 저장 - (1) decode 타입 지정 오류 해결 NSCoding과 NSKeyed(Un)Archiver 디바이스를 껐다 켜도 데이터가 영구적으로 남아있도록 하기 위해 직접 만든 클래스가 NSCoding이라는 프로토콜의 정의를 따르도록 했다. 자세하게 알아보지 않고 그냥 사용법만 대충 보고 구현해봤다. NSCoding프로토콜의 정의를 따르기 위해서는 requred init과 encode 메소드를 구현해야 한다. 개인적으로 이해한 바로는 encode가 데이터를 인코딩 하는 것이고 requred init에서는 인코딩된 데이터를 디코딩하여 쓰는 것이라 생각하고 있다. 위의 메소드를 직접 불러서 사용하기 보다는 NSKeyedArchiver와 NSKeyedUnarchiver를 통해 자동으로 불려지는 것 같다. decode 타입 지..
프로그래밍 방법론) 객체지향프로그래밍(OOP) - (3) 상속과 다형성 객체지향프로그래밍의 특징으로 크게 캡슐화, 은닉화, 추상화, 상속, 다형성이 있습니다. 그 중 상속과 다형성에 대해 알아볼까 합니다. 상속 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것 상속을 통해 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이합니다. 장점 코드 재사용성 코드 중복 제거 프로그램 생산성과 유지보수 향상 오버라이딩 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것 상속받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야 하는 경우에 사용한다. 오버라이딩 조건 자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와 다음의 조건이 같아야 ..
프로그래밍 방법론) 객체지향프로그래밍(OOP) - (2) 객체 비교 객체간의 비교 - 기본 == 기본적으로 객체를 비교할 때 값이 아닌 레퍼런스를 비교합니다. 따라서 a와 b는 같은 값을 가지고 있지만 서로 다른 것으로 나타납니다. a와 c는 같은 값을 참조하고 있으므로 같다고 간주합니다. class Car : NSObject { var horsePower : Int var plate : String init(power: Int, id: String) { horsePower = power plate = id } } let a = Car(power: 200, id: "AX993JE") let b = Car(power: 200, id: "AX993JE") let c = a print(a == b) //
프로그래밍 방법론) 객체지향프로그래밍(OOP) - (1) 객체란? 객체 지향 프로그래밍에서 인스턴스는 해당 클래스의 구조로 컴퓨터 저장공간에서 할당된 실체를 의미한다. 여기서 클래스는 속성과 행위로 구성된 일종의 설계도이다. OOP에서 객체는 클래스와 인스턴스를 포함한 개념이다. 출처: wikipedia 객체지향프로그래밍에서 객체란 무엇인가를 고민하면 떠오르는 용어가 세 가지 있습니다. 바로 클래스, 오브젝트, 인스턴스 입니다. 위 인스턴스의 정의에서처럼 세 가지 개념은 서로 연관되어 있습니다. 각 용어에 대해 더 자세히 알아보자면 다음과 같습니다. Object 실제로 존재하는 것 객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.'라는 것입니다. 객체란 실제 세계에서 처럼 실제 사물의 속성과..
분산시스템) 커뮤니케이션 Communication Layered protocols shared memory와 같은 원격에의 메모리를 접근해서 쓰는 것이 없기 때문에 모든 통신은 low level로 메세지를 주고받는 것을 기반으로 해야한다. Agreement among communicating processes 통신을 주고받기 위해서 통신규약이 필요하다. 얼마나 센 전기신호를 1로 표시할지, 마지막 비트가 무엇인지 받는 곳은 어떻게 알지, 메세지가 손상되었는지 아닌지 받는 쪽에서는 어떻게 알지, 데이터 타입은 어떤것으로 할지 등을 정해야한다. OSI model 동의가 필요한 부분이 다양한 레벨에서 있다. 따라서 Open System Interconnection Reference model (OSI model)이 생겼다. 애플리케이..