[iOS 2주차] 과제 1 swift로 계산기 만들기

황석범·2024년 10월 30일
0

첫 과제인 '계산기 만들기'가 생겼다.
강의에서 들은 내용을 활용하여 만들어보도록 하자.

과제는 Lv1~Lv4까지 있다.

  • Lv1
  • Lv2
  • Lv3

LV1

결과가 잘 나온것을 확인할 수 있다.

위 처럼 0으로 나누어봤더니 inf라는 결과가 나왔다.
swift에서 inf는 infinity, 즉 무한값을 뜻한다.

LV2

나머지 연산을 추가하려 했더니 위와 같은 경고창이 떴다.

Double 타입의 데이터를 나머지 연산하기 위해서는 truncatingRemainder 메소드를 사용해야 한다.

위처럼 결과가 잘 나온 것을 확인할 수 있다.

LV3

Calculator 클래스를 만들고 더하기, 빼기, 곱하기, 나누기를 하는 각 클래스의 인스턴스를 만들고 초기화까지 해주었다.

위에서 정의한 각 클래스(4가지 연산)들을 구현해주었다.

인스턴스를 생성하고 실행해주었다.

Lv2와 Lv3의 코드를 비교해보면 Lv3 코드가 객체지향적 인코드로 객체지향의 장점들을 가지고 있다고 생각한다.
객체지향은 4주차 강의로 아직 보지 못하여 간단하게 정리해보면
프로그램을 독립된 단위인 객체들로 나누고 이 객체들의 상호작용을 통해 프로그램을 설계하고 구현하는 패러다임이다. 각 객체는 속성메서드 를 가지며 클래스라는 틀을 사용하여 객체를 생성합니다. 객체지향 프로그래밍에는 추상화, 캡슐화, 상소, 다형성 이라는 특징을 가집니다.
장점으로는 모듈성과 재사용성, 유지보수 용이성에 장점을 가지고 단점으로는 복잡성, 용량, 실행속도에 단점이 있습니다.

Lv3의 단일책임이라는 hint가 명시되어 있어 찾아보았다.

하나의 객체에 너무 많은 책임이 물려있을 경우, 프로젝트에서 해당 객체의 의존성이 높아지게 된다. 이러한 현상은 객체지향의 주요 특징 중 하나인 캡슐화를 정면으로 부정한다. 그 뿐만 아니라, 각자의 코드가 서로 의존될 경우, 코드 수정에 따른 영향도 역시 높아지고, 범위 또한 넓어진다. 만약 코드의 규모가 크거나 복잡성이 심하다면, 코드 수정 시 마다 오만가지 오류가 발생할 것이다.

profile
iOS 공부중...

0개의 댓글

관련 채용 정보