분류 전체보기
-
[객체지향의 사실과 오해-1] 객체,캡슐화,추상화개발/프로그래밍 2021. 10. 16. 17:29
흔히 커피를 주문할때 필요한 사람은 손님과 캐시어 그리고 바리스타로 구성된다. 손님은 커피를 주문하고 캐시어는 바리스타에게 주문을 알려준다. 그리고 바리스타는 커피를 제조할것이다. 이 사람들을 객체로 생각해보자 각 객체는 역할과 책임을 다한다. 손님은 주문을 할 역할과 책임, 캐시어는 주문을 받아 바리스타에게 커피를 요청할 역할과 책임 그리고 바리스타는 커피를 제조할 역할과 책임을 가진다. 그리고 각 객체들은 각자의 역할과 책임을 가지며 협력한다. 또 각 객체들은 자율성을 가지고있다. 자율성이란 자기 스스로 원칙에따라 일을하거나 스스로 통제 절제하는것이다. 예로 어떻게 주문할지 어떻게 커피를 만들지 의 문제는 각 객체가 스스로 판단하여 행동한다. 그것을 자율적이라 표현한다. 각 객체들이 협력을 하기위해 ..
-
2021 9월 투자복기카테고리 없음 2021. 10. 10. 16:47
9월은 8월에 겪었던 하락장을 한번 더 겪었다. 따라서 코스피 지수가 2900까지 내려왔고 내 보유 주식또한 조정을 받고있다. 9월 초에는 약간의 반등이있었다 그때 대한제강이 일시적으로 올라 일부 매도를 하였으며 다시 원래 가격으로 돌아와 다시 매수를 했다. 이게 9월에 매매한 전체내역이다. 현금비중 인플레이션, 금리인상, 공급부족 등의 이슈로 스태그플레이션 불안감이 조성되어 지수가 많이 내려왔으나 공급 문제가 앞으로 천천히 해결될것이라 믿는다. 그리고 위드 코로나의 영향으로 경기가 회복될것이라 믿는다. 따라서 현금 비중을 55% -> 50% 로 줄였다. 매수 내역 계획했던대로 엘비세미콘 , 하이트진로를 매수했다. 엘비세미콘은 19% 하이트진로를 12% 보유하고있다. 현대차와,하이브,대한제강 역시 추가 ..
-
[Swift] 동적디스패치(Dynamic Dispatch) 와 Private & final 사용카테고리 없음 2021. 10. 7. 14:45
디스패치란 어떤 메소드를 쓸지 결정하고 사용하는 과정이다. class MotherClass { func printHello() { print("hello") } } class ChildClass: MotherClass { } let helloClass: MotherClass = ChildClass() helloClass.printHello() 위의 코드를 보면 printHello() 메소드는 MotherClass 에 구현이 되어있으며 ChildClass 는 MotherClass를 상속 받고있지만 printHello() 메소드를 오버라이드 하지 않았다. helloClass 객채는 ChildClass 이지만 이런경우 마지막 helloClass.printHello() 메소드는 MotherClass의 print..
-
[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:..
-
expandable + dynamic height tableview cell 구현하기개발/Swift 2021. 9. 2. 18:24
데이터 값에 따라 유동적인 높이를 가진 Tableview를 구현 해야하고 그리고 해당 Tableview는 접기/펼치기 기능이 들어 있어야 할경우의 예시입니다. 우선 Tableview의 기본적인 구현 이 되어있다는 가정하에 진행합니다. 접기 펼치기 기능은 단순히 Row의(cell) 높이를 바꿔 주면 됩니다. heightForRowAt 함수를 통해 유동적으로 cell의 높이를 지정 해주면 됩니다. func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { print("heightForRowAt \(indexPath)") if helpViewModel.isSelectedCell(indexPath: index..