Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- array
- 프로그래머스 자동커밋
- 주사위 게임1
- 스파르타코딩캠프
- n번째 원소까지
- continue
- 배열 만들기1
- 프로그래머스 조건에 맞게 수열 변경하기 3
- 프로그래머스 최댓값 만들기(2)
- 프로그래머스 문자열 정렬하기 (1)
- Break
- 프로그래머스 문자열 붙여서 출력하기
- Til
- 프로그래머스 주사위 게임1
- 프로그래머스 n의 배수 고르기
- 조건에 맞게 수열 변경하기 3
- 스파르타 코딩클럽 내일배움캠프
- 객체지향
- ruby설치
- 문자열 정렬하기 (1)
- cocoapods 설치 오류
- 프로그래머스
- 문자열 붙여서 출력하기
- swift
- 프로그래머스 배열 만들기1
- Error installing cocoapods
- 스페인어
- 연산자
- 프로그래머스 n번째 원소까지
- 프로그래머스 암호 해독
Archives
- Today
- Total
dev._.note
[Swift] 객체지향(OOP/Object-Oriented-Programming) 본문
📌 객체지향 프로그래밍(Object-Oriented-Programming)
[JAVA] 객체지향(Object oriented)
객체지향 언어란? 현실 세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있으며, 발생하는 모든 사건들은 객체간의 상호 작용이다. 이 개념을 컴퓨터로 옮겨 만들어낸 것
how-mrk.tistory.com
- 프로그램을 어떻게 설계해야하는 지에 대한 방법론 중 하나(패러다임)
- About ‘객체’
- 객체란 쉽게 말하자면 ‘대상을 나타내는 단어’
- 각 객체와 그 객체들간의 관계를 설계하는 것이 ‘객체 지향 프로그래밍’
📌 OOP의 특징
[JAVA] 객체지향의 3대 요소 & 5대 원칙
* 3대 요소 1. 캡슐화(Encapsulation) = 정보은닉 캡슐화란? - 추상화를 통해 정의된 데이터들과 기능을 하나로 묶어 관리하는 기법. - 클래스의 가장 중요한 목적인 데이터의 접근제한을 원칙으로 하
how-mrk.tistory.com
- 추상화, 캡슐화, 상속, 다형성이라는 4가지의 개념이 있습니다
- 추상화 (Abstraction): 추상화는 객체 지향 프로그래밍의 핵심 개념 중 하나로, 복잡한 시스템을 단순화하여 중요한 부분을 강조하고 불필요한 부분을 숨기는 것을 의미. 클래스나 프로토콜을 통해 데이터와 동작을 추상화하여 필요한 정보만을 노출시키는 것을 포함.
- 캡슐화 (Encapsulation): 캡슐화는 객체의 상태(데이터)와 행동(메서드)를 하나로 묶고, 외부에서의 접근을 제한하여 객체 내부의 세부 구현을 숨기는 것을 의미. 이를 통해 객체 간의 의존성을 줄이고 코드를 보호하며 유지보수성을 높일 수 있음.
- 상속 (Inheritance): 상속은 기존 클래스에서 정의된 속성과 메서드를 다른 클래스에서 재사용하는 것을 말함. 부모 클래스(상위 클래스, 슈퍼 클래스)의 특성을 자식 클래스(하위 클래스, 서브 클래스)가 물려받아 사용할 수 있음.
- 다형성 (Polymorphism): 다형성은 객체 지향 프로그래밍의 특징 중 하나로, 동일한 인터페이스를 가진 다른 클래스들이 각각의 방식으로 동작할 수 있는 능력을 말함. 다형성은 오버라이딩과 연관되어 있으며, 서로 다른 클래스들이 동일한 메서드를 호출할 때 각 클래스의 오버라이딩된 메서드가 실행.
- 오버라이딩 (Overriding): 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말함. 자식 클래스에서 부모 클래스의 동일한 메서드 이름을 사용하여 내용을 변경하거나 확장가능.
- 오버로딩 (Overloading): 오버로딩은 동일한 함수나 메서드 이름을 가지지만 매개변수의 타입, 개수, 순서 등이 다른 여러 버전의 함수를 정의하는 것을 말함. 이를 통해 동일한 이름의 다양한 버전의 함수를 사용가능.
// 추상화 - 이렇게 타입을 정의하는 것
class Account {}
struct Account {}
protocol Account {}
// 캡슐화
class Person {
private var location = "서울"
private func doSomething1() {
print("잠시 휴게소에 들려서 딴짓")
}
private func doSomething2() {
print("한숨 자다 가기")
}
func currentLocation() {
print("====")
print("현재 위치 :", location)
print("====")
}
func goToBusan() {
print("서울을 출발합니다.")
doSomething1()
doSomething2()
print("부산에 도착했습니다.")
location = "부산"
}
}
// 상속
class Animal {
var species = "동물"
}
class Dog: Animal {
var name = "초코"
}
let dog = Dog()
dog.species // 동물
dog.name // 초코
// 다형성
1) 오버라이딩
class Dog {
func bark() { print("멍멍") }
}
class Poodle: Dog {
override func bark() { print("왈왈") }
}
class Husky: Dog {
override func bark() { print("으르르") }
}
class Bulldog: Dog {
override func bark() {
super.bark()
print("bowwow")
}
}
var dog: Dog = Dog()
dog.bark() // 멍멍
dog = Poodle()
dog.bark() // 왈왈
dog = Husky()
dog.bark() // 으르르
dog = Bulldog()
dog.bark() // 멍멍, bowwow
2) 오버로딩
// 함수를 식별할 땐 단순히 함수 이름을 보고 하는 게 아니라
// 함수 이름, 파라미터(타입, 갯수, Argument Label), 리턴타입을 모두 종합해서 함수를 식별
func printParameter() {
print("No param")
}
func printParameter(param: Int) {
print("Input :", param)
}
func printParameter(_ param: Int) -> Int {
print("Input :", param)
return param
}
func printParameter(_ param: Int) -> Double {
print("Input :", param)
return Double(param)
}
printParameter()
printParameter(param: 1)
let int: Int = printParameter(2)
let double: Double = printParameter(2)
'Dev > SWIFT' 카테고리의 다른 글
[Swift] Class와 Struct, Enum (0) | 2023.11.30 |
---|---|
[Swift] radix (0) | 2023.11.29 |
[Swift] Array와 Set, Dictionary (1) | 2023.11.29 |
[Swift] Queue와 Stack (0) | 2023.11.29 |
[Swift] 연산자, 조건문과 반복문 (1) | 2023.11.28 |