개발
-
객체지도개발/프로그래밍 2021. 11. 7. 19:57
소프트웨어는 기능과 구조로 구성된다. 기능은 사용자가 필요로 하여 사용하는 것이고 구조는 해당 소프트웨어가 어떻게 구성되는가 이다. 기능을 위주로한 개발과 구조를 위주로한 개발의 차이점은 구조를 위주로 한 개발이 더 새로운 기능에대한 유연한 대처와 범용성 그리고 재사용성이 가능하다는 것이다. 새로운 기능에 대해 고려하지 않는다면 필요한 기능만 잘 돌아가면 되지만 미래에 예측할수 없는 새로운 변화에대해 대처하기 위해서는 구조를 위주로한 개발을 해야한다. 내가 원하는 목적지에 도달하기위해 지나가는 사람에게 길을 물을수도 있지만 지도를 사용해 목적지에 도달할수있다. 지도라는 구조를 사용해 목적지에 도달하는 기능을 수행한다. 길을 묻는것은 하나의 목적지만 갈수있지만 지도라는 구조가 있다면 누구든지 어디에도 갈수..
-
[객체지향의 사실과 오해-2] 역할,책임,협력,책임주도 설계개발/프로그래밍 2021. 10. 30. 17:03
객체지향 설계는 중요하게 책임, 역할, 협력으로 구성된다. 이상한 나라의 앨리스에서 재판을 하는 이야기를 보면 왕이 재판을 주관하여 재판이 진행이되는데 왕이 토끼에게 모자장수(증인)을 부르라 명하고 토끼는 증인을 불러와 증인이 증언을 하는 내용이 있다. 여기서 이 각 객체들은 협력을 통해 재판을 진행한다. 그리고 이 협력은 요청과 응답으로 이루어진다. 1. 누군가 왕에게 재판을 요청한다. 2. 왕이 토끼에게 (모자장수)증인을 불러올것을 요청한다. 3. 토끼는 증인에게 재판에 입장을 요청한다. 4. 증인은 재판 입장에 응답한다. 5. 증인은 왕에게 증언을 응답한다. 여기에서 각 객체가 수행하고 있는 요청과 응답은 각 객체의 책임을 의미한다. 토끼는 증인을 불러올 책임을 가지고있고 증인은 증언을 할 책임이 ..
-
[Swift] 클래스의 init 파헤치기개발/Swift 2021. 10. 18. 17:14
구조체에서 init struct에서 init 메소드를 구현하지않아도 그안의 프로퍼티에따라 init 함수를 사용할수있다. "memberwise initializer" 를 제공하기 떄문이다. struct Car { let brand: String let price : Int } let car = Car(brand:"KIA", price:3000) 클래스의 init 에서는 designated init / convenience init 이렇게 구분된다. 쉽게 designated는 클래스의 찐 init 이고 convenience 는 몇개의 프로퍼티를 init과 다르게 하고싶을때 designated init을 부르고 바꾸는 식이다. class Car : Vehicle { var brand: String var pr..
-
[객체지향의 사실과 오해-1] 객체,캡슐화,추상화개발/프로그래밍 2021. 10. 16. 17:29
흔히 커피를 주문할때 필요한 사람은 손님과 캐시어 그리고 바리스타로 구성된다. 손님은 커피를 주문하고 캐시어는 바리스타에게 주문을 알려준다. 그리고 바리스타는 커피를 제조할것이다. 이 사람들을 객체로 생각해보자 각 객체는 역할과 책임을 다한다. 손님은 주문을 할 역할과 책임, 캐시어는 주문을 받아 바리스타에게 커피를 요청할 역할과 책임 그리고 바리스타는 커피를 제조할 역할과 책임을 가진다. 그리고 각 객체들은 각자의 역할과 책임을 가지며 협력한다. 또 각 객체들은 자율성을 가지고있다. 자율성이란 자기 스스로 원칙에따라 일을하거나 스스로 통제 절제하는것이다. 예로 어떻게 주문할지 어떻게 커피를 만들지 의 문제는 각 객체가 스스로 판단하여 행동한다. 그것을 자율적이라 표현한다. 각 객체들이 협력을 하기위해 ..
-
[Swift 기본]ARC 와 Weak vs Strong개발/Swift 2021. 10. 4. 19:50
ARC - Automatic Reference Counting 자동으로 메모리를 관리해주는 방식이다. 특징은 참조 카운팅이 0 이될때만 메모리에서 해제한다. 아래와 같이 프로퍼티 , 상수, 변수에 클래스 인스턴스를 할당하는걸 강한 참조라고 함 let sangsu = Person(name:"sangsu") var sangsu = Persion(name: "sangsu") let myFriend : Friend() myFriend.person = Person(name:"sangsu") 아래의 경우 참조 카운팅을 한번 보자. let test1 = Person(name:"simon") let test2 = test1 test1 = nil 위의 test1 상수는 nil값이 할당되어 참조가 사라졌지만 test2 상..
-
Localize + UserDefaults 사용하여 언어 설정 기능 구현 하기개발/Swift 2021. 9. 16. 15:51
Localizable 세팅 참고 : https://zeddios.tistory.com/368 앱 내의 언어설정을 위해 Localize 를 사용하고 해당 언어설정 상태를 앱 내부에 저장해두고 사용하기위해 UserDefaults를 사용했습니다. 첫번째로 Localize.setCurrentLanguage() 함수를 사용해 언어를 세팅해주는것입니다. @IBAction func onClickKorean(_ sender: Any) { Localize.setCurrentLanguage("ko") } @IBAction func onClickEnglish(_ sender: Any) { Localize.setCurrentLanguage("en") } "ko" "en" 같은 언어코드는 http://www.lingoes.ne..
-
[Flutter 기초] Future 개념과 사용방법 async/await,then개발/flutter 2021. 9. 5. 16:59
Modern Collection View 와 MVVM 패턴 가이드 [iOS] Modern Collection View & MVVM 패턴 가이드 - 인프런 | 강의 MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., - 강의 소개 | 인프런 www.inflearn.com Future 은 미래의 값을 의미합니다. 미래의 값은 무슨 말일까요? 비동기로 처리되어야 할 값을 의미합니다. 더 어려운 말이죠? 쉽게 예시를 들어봅니다. 카페에서 아메리카노를 주문합니다. 돈을내고 1분정도 기다리면 아메리카노를 받겠죠? 그러면 지금 기준으로 아메리카노는 Future 입니다. 1분 미래에 받을수 있기 때문입..
-
재사용 가능한 tableview cell nib만들기개발/Swift 2021. 9. 2. 18:53
tableview cell 을 하나 만들어두고 여려곳에서 쓰기위해 사용하는 tableview 에서 디자인을 구현하지않고 cell 만 따로 빼내서 디자인을 구현 하려한다. 디자인은 이렇게 대충 구현해두고 Class명을 지정해준다 이렇게 파일은 만들어둔 상태이다. 또 Identifier를 지정해준다. Class명과 꼭 같을 필요는없다. 이제 여기 HelpViewController 에서 아까 만들어둔 BoardTableViewCell (xib파일)을 사용할것이다. 그러려면 우선 tableview에 nib을 등록을 해줘야한다. @IBOutlet weak var faqTableView: UITableView! private func registerXib() { let nibName = UINib(nibName:..