객체 지향 프로그래밍(Object-Oriented Programming)
- 줄여서 OOP라고 부르기도 한다.
- 프로그램을 어떻게 설계해야하는 지에 대한 방법론 중 하나
특징은 다음과 같다.
추상화, 캡슐화, 상속, 다형성이라는 개념이 있다.
1. 추상화는 객체 지향 프로그래밍의 핵심 개념 중 하나로, 복잡한 시스템을 단순화 하여 중요한 부분을 강조하고 불필요한 부분을 숨기는 것을 의미한다. 클래스나 프로토콜을 통해 데이터와 동작을 추상화하여 필요한 정보만을 노출시키는 것을 포함한다.
//추상화
class Account{}
struct Account {}
protocol Account {}
2. 캡슐화는 객체의 상태와 행동을 하나로 묶고, 외부에서 접근을 제한하여 객체 내부의 세부 구현을 숨기는 것을 의미한다. 이를 통해 객체 간의 의존성을 줄이고 코드를 보호하며 유지보수성을 높일 수 있다.
// 캡슐화
class Person{
private var cap = "안녕"
private func doSomething1(){
print("메로로로롱")
}
private func doSomething2(){
print("바보바보")
}
func firstcap() {
print("===")
print("cap 프린트 테스트:", cap)
print("===")
}
func seconcap() {
print("시이이이작")
doSomething1()
doSomething2()
print("끄으으으읕")
location = "종료"
}
}
3. 상속은 기존 클래스에서 정의된 속성과 메서드를 다른 클래스에서 재사용하는 것을 말 한다. 부모 클래스의 특성을 자식 클래스가 물려받아 사용할 수 있다.
//상속
class Animal{
var species = "동물"
}
class Dog: Animal{
var name = "두부"
}
let dog = Dog()
dog.species //동물
dog.name //두부
4. 다형성은 객체 지향 프로그래밍의 특징 중 하나로, 동일한 인터페이스를 가진 다른 클래스들이 각각의 방식으로 동작할 수 있는 능력을 말 한다. 다형성은 오버라이딩과 연관되어 있으며, 서로 다른 클래스들이 동일한 메서드를 호출할 때 각 클래스의 오버라이딩된 메서드가 실행된다.
- 오버라이딩? (Overriding) : 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 말 한다. 자식 클래스에서 부모 클래스의 동일한 메서드 이름을 사용하여 내용을 변경하거나 확장할 수 있다.
- 오버로딩? (Overloading): 오버로딩은 동일한 함수나 메서드 이름을 가지지만 매개변수의 타입, 개수, 순서 등이 다른 여러 버전의 함수를 정의하는 것을 말 한다. 이를 통해 동일한 이름의 다양한 버전의 함수를 사용할 수 있다.
오버 라이딩
// 다형성
// 1. 오버라이딩
class hi{
func greeting() {print("안녕")}
}
class cat: hi {
override func greeting() {print("야옹")}
}
class dog: hi {
override func greeting() {print("멍멍")}
}
class haha: hi {
override func greeting(){
super.greeting()
print("우히히")
}
}
var test: hi = hi()
test.greeting() // 안녕
test = cat()
test.greeting() // 야옹
test = dog()
test.greeting() // 멍멍
test = haha()
test.greeting() // 안녕, 우히히
오버 로딩
// 오버로딩
func printParameter() {
print("No parameter") //No parameter 출력
}
func printParameter(param: Int){
print("Input :", param) //Input : 1 출력
}
func printParameter(_ param: Int) -> Int {
print("Input :", param) //Input : 2 출력
return param
}
func printParameter(_ param: Int) -> Double{
print("Input :", param) //Input : 2 출력
return Double(param)
}
printParameter()
printParameter(param: 1)
let int: Int = printParameter(2) // 2 출력
let double: Double = printParameter(2) // 2 출력
'Swift' 카테고리의 다른 글
기초 문법 타입 캐스팅 (1) | 2024.06.12 |
---|---|
내가 볼려고 만든 SOLID정리 (0) | 2024.06.07 |
문법 기초 공부 (배열, 집합, 딕셔너리) 미완 (1) | 2024.06.05 |
문법 기초 공부 (스택&큐) (0) | 2024.06.05 |
문법 기초 공부 (0) | 2024.06.03 |