본문 바로가기

전체 글

(139)
iOS Study : 8주차 : 문법 세부 정리 - 옵셔널 체이닝(Optional Chaining) 옵셔널 체이닝(Optional Chaining) 옵셔널 체이닝이란 옵셔널일 수 있는 인스턴스 내부의 프로퍼티, 메서드, 서브 스크립트를 매번 nil인지 아닌지 체크를 하지 않고 최종적으로 원하는 값, 혹은 nil인지 판단하는 방법이다. 간단한 예시 옵셔널 체이닝을 사용하지 않았을 때 class Family { var child: Child? } class Child { var name: String? } var family: Family? = Family() var child: Child? = Child() child?.name = "아들" func noOptionalChaining(child: Child?) { if let child = child { if let name = child.name { p..
iOS Study : 7주차 - Swift 공식 문서 정리 Enumerations and Structures(열거형과 구조체) 열거형을 만들기 위해서는 enum을 사용한다. rawValue를 사용하여 정수값을 가지게 할 수도 있다. rawValue를 통해 초기화도 가능하다. 이 때 rawValue가 case에 해달하지 않을 수 있기 때문에 rawValue를 통해 초기화 한 인스턴스는 옵셔널 타입이다. switch문에 모든 열거형 케이스를 포함한면 default를 작성할 필요가 없다. enum Rank: Int { case ace = 1 case two, three, four, five, six, seven, eight, nine, ten case jack, queen, king func simpleDescription() -> String { switch sel..
iOS Study : 7주차 - 프로토콜 지향 프로그래밍(P.O.P) 프로토콜 지향 프로그래밍 - P.O.P 애플에서 스위프트는 프로토콜 지향 언어(Protocol-Oriented Language)라고 했다. 스위프트는 클래스로 구현된 타입이 없고 대부분 구조체로 기본 타입이 구현되어 있는데 이는 프로토콜과 익스텐션의 조화를 통해 가능한 것이다. 프로토콜 초기 구현 익스텐션을 통한 프로토콜의 실제 구현 // 무언가를 수신할 수 있는 기능 protocol Receiveable { func received(data: Any, from: Sendable) } extension Receiveable { // 메시지를 수신합니다. func received(data: Any, from: Sendable) { print("\(self) received \(data) from \(fro..
iOS Study : 7주차 - 접근제어(모듈과 소스파일, 접근수준, 접근제어 구현 참고사항, private와 fileprivate, 읽기 전용 구현) 접근제어 코드끼리 상호작용을 할 때 파일 간 또는 모듈 간에 접근을 제한할 수 있는 기능 접근제어를 통해 코드의 상세 구현은 숨기고 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 접근제어의 필요성 외부에서 보거나 접근하면 안되는 코드가 있는 경우 꼭 필요한 부분만 제공해야 하는데 전체 코드가 노출될 가능성이 있을 때 접근제어를 이용한다. 모듈 모듈은 배포할 코드의 묶음 단위이다. 통상 하나의 프레임워크나 라이브러리, 애플리케이션이 모듈 단위가 될 수 있다. 스위프트에서는 import 키워드를 사용해 불러온다. 소스파일 소스파일은 하나의 스위프트 소스 코드 파일을 의미한다. 스위프트에서 보통 파일 하나에 타입 하나만 정의하지만, 때로는 소스파일 하나에 여러 타입이나 함수 등 많은 것을 정의하거나 구..
Java Study : 8주차 - 백준 문제풀이 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[][] apt = new int[15][15]; for(int i = 0; i < 15; i++) { apt[i][1] = 1; apt[0][i] = i; } for(int i = 1; i < 15; i ++) ..
Java Study : 8주차 정리 - 컬렉션 프레임워크(제네릭, 컬렉션 프레임워크, (List, Set, Map)인터페이스) 제네릭 어떤 값이 하나의 참조 자료형이 아닌 여러 참조 자료형을 사용할 수 있도록 프로그래밍 하는 것을 제네릭 프로그래밍 이라고 한다. 제네릭 프로그램은 참조 자료형이 변환될 때 이에 대한 검증을 컴파일러가 하므로 안정적이다. 제네릭의 필요성 3D 프린터를 예시로 들면 입체 모형을 만드는데 필요한 재료가 한 가지가 아니기 때문에 재료마다 클래스를 만드는 것은 비효율적이게 된다. 이런 경우에 재료 변수의 자료형을 Object로 사용이 가능하다. public class ThreeDPrinter { private Object material; //필요한 재료를 Object로 사용 public void setMaterial(Object material) { this.material = material; } pu..
Java Study : 7주차 - 백준 문제풀이 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int num = in.nextInt(); for(int i =2; i*i
Java Stduy : 7주차 정리 - 기본 클래스(Object, String, Wrapper, Class 클래스) Object 클래스 Object 클래스는 모든 자바 클래스의 최상위 클래스이다. 모든 클래스는 Object 클래스로부터 상속을 받는데 클래스 선언시 자동으로 쓰이게 되기 때문에 따로 쓰지는 않는다. toString() 메서드 객체 정보를 문자열로 표현하여 반환한다. 재정의하여 객체에 대한 설명이나 특정 멤버 변수 값을 반환한다. package object; class Book{ int bookNumber; String bookTitle; Book(int bookNumber, String bookTitle){ //번호와 책을 매개변수로 입력받는 생성자 this.bookNumber = bookNumber; this.bookTitle = bookTitle; } } public class ToStringEx {..