From 0d226d80ad870e5580c03a5b29eba750fd3654fe Mon Sep 17 00:00:00 2001 From: Sergei Raskin Date: Wed, 27 Nov 2019 16:45:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=80=D0=BE=D0=BA=205.=20=D0=9A=D0=BE?= =?UTF-8?q?=D0=BC=D0=BC=D0=B8=D1=82=20=D0=B8=D0=B7=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D0=BD=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B8=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../5L_RaskinSergey.xcodeproj/project.pbxproj | 289 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 34550 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 72 +++++ .../xcschemes/xcschememanagement.plist | 14 + .../5L_RaskinSergey/main.swift | 166 ++++++++++ 7 files changed, 556 insertions(+) create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.pbxproj create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.pbxproj b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.pbxproj new file mode 100644 index 0000000..ec2f2f8 --- /dev/null +++ b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.pbxproj @@ -0,0 +1,289 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 91776A75238E4A650059CE2A /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91776A74238E4A650059CE2A /* main.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 91776A6F238E4A650059CE2A /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 91776A71238E4A650059CE2A /* 5L_RaskinSergey */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = 5L_RaskinSergey; sourceTree = BUILT_PRODUCTS_DIR; }; + 91776A74238E4A650059CE2A /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 91776A6E238E4A650059CE2A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 91776A68238E4A650059CE2A = { + isa = PBXGroup; + children = ( + 91776A73238E4A650059CE2A /* 5L_RaskinSergey */, + 91776A72238E4A650059CE2A /* Products */, + ); + sourceTree = ""; + }; + 91776A72238E4A650059CE2A /* Products */ = { + isa = PBXGroup; + children = ( + 91776A71238E4A650059CE2A /* 5L_RaskinSergey */, + ); + name = Products; + sourceTree = ""; + }; + 91776A73238E4A650059CE2A /* 5L_RaskinSergey */ = { + isa = PBXGroup; + children = ( + 91776A74238E4A650059CE2A /* main.swift */, + ); + path = 5L_RaskinSergey; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 91776A70238E4A650059CE2A /* 5L_RaskinSergey */ = { + isa = PBXNativeTarget; + buildConfigurationList = 91776A78238E4A650059CE2A /* Build configuration list for PBXNativeTarget "5L_RaskinSergey" */; + buildPhases = ( + 91776A6D238E4A650059CE2A /* Sources */, + 91776A6E238E4A650059CE2A /* Frameworks */, + 91776A6F238E4A650059CE2A /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = 5L_RaskinSergey; + productName = 5L_RaskinSergey; + productReference = 91776A71238E4A650059CE2A /* 5L_RaskinSergey */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 91776A69238E4A650059CE2A /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1120; + LastUpgradeCheck = 1120; + ORGANIZATIONNAME = "raskin-sa"; + TargetAttributes = { + 91776A70238E4A650059CE2A = { + CreatedOnToolsVersion = 11.2.1; + }; + }; + }; + buildConfigurationList = 91776A6C238E4A650059CE2A /* Build configuration list for PBXProject "5L_RaskinSergey" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 91776A68238E4A650059CE2A; + productRefGroup = 91776A72238E4A650059CE2A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 91776A70238E4A650059CE2A /* 5L_RaskinSergey */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 91776A6D238E4A650059CE2A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 91776A75238E4A650059CE2A /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 91776A76238E4A650059CE2A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 91776A77238E4A650059CE2A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 91776A79238E4A650059CE2A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5C3KKHP5ML; + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 91776A7A238E4A650059CE2A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5C3KKHP5ML; + ENABLE_HARDENED_RUNTIME = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 91776A6C238E4A650059CE2A /* Build configuration list for PBXProject "5L_RaskinSergey" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 91776A76238E4A650059CE2A /* Debug */, + 91776A77238E4A650059CE2A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 91776A78238E4A650059CE2A /* Build configuration list for PBXNativeTarget "5L_RaskinSergey" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 91776A79238E4A650059CE2A /* Debug */, + 91776A7A238E4A650059CE2A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 91776A69238E4A650059CE2A /* Project object */; +} diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..fd01f8b --- /dev/null +++ b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/project.xcworkspace/xcuserdata/raskin-sa.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..b3eeff6f10fc88358389bee91ed595d9f88a932a GIT binary patch literal 34550 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 + + + + + + + + + + + + + + + + + + + + diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..c62829c --- /dev/null +++ b/lesson05/5L_RaskinSergey/5L_RaskinSergey.xcodeproj/xcuserdata/raskin-sa.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + 5L_RaskinSergey.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift b/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift new file mode 100644 index 0000000..207c327 --- /dev/null +++ b/lesson05/5L_RaskinSergey/5L_RaskinSergey/main.swift @@ -0,0 +1,166 @@ +// +// main.swift +// 5L_RaskinSergey +// +// Created by raskin-sa on 27/11/2019. +// Copyright © 2019 raskin-sa. All rights reserved. +// + +//Создать протокол «Car» и описать свойства, общие для автомобилей, а также метод действия. +//Создать расширения для протокола «Car» и реализовать в них методы конкретных действий с автомобилем: открыть/закрыть окно, запустить/заглушить двигатель и т.д. (по одному методу на действие, реализовывать следует только те действия, реализация которых общая для всех автомобилей). +//Создать два класса, имплементирующих протокол «Car»: tunkCar и sportCar. Описать в них свойства, отличающиеся для спортивного автомобиля и цистерны. +//Для каждого класса написать расширение, имплементирующее протокол «CustomStringConvertible». +//Создать несколько объектов каждого класса. Применить к ним различные действия. +//Вывести сами объекты в консоль. + +protocol Car{ + var engine_status:Bool{get set} + var door_status:Bool{get set} + var petrol_in:Double{get set} + + func switch_door(iflag:Bool)//открывает/закрывает двери + +} + +//добавляем функцию вкл/выкл двигател +extension Car { + mutating func switch_engine(iflag:Bool){ + + if iflag == true { + engine_status = false + } + else{ + engine_status = true + } +} +} + +//добавляем функцию заливки бензина +extension Car{ + mutating func fill_petrol(ipetrol:Double){ + petrol_in += ipetrol + } +} + +//добавляем extension, имплементирующее протокол «CustomStringConvertible» +protocol consolePrintable:CustomStringConvertible { + func printDescription() + } + +extension consolePrintable{ + func printDescription(){ + print(description) + } +} + +class Sportcar : Car, consolePrintable{ + + var engine_status: Bool=true + var door_status:Bool=false + var petrol_in:Double=0 + + func switch_door(iflag: Bool) { + door_status = (iflag == true ? false : true) + } + + var description: String { + return String(describing: "Вид транспортного средства: \(v_type), Модель: \(v_model), статус двигателя: \(engine_status == true ? "запущен":"заглушен"), статус дверей: \(door_status == true ? "открыты": "закрыты"), залито бензина: \(petrol_in) литров, количество людей: \(people_count)") + } + + var people_count:Int = 0 + let v_type:String="автомобиль" + var v_model:String + + init(iv_model:String, ie_status:Bool, id_status: Bool, i_petrol:Double, i_people:Int){ + self.v_model = iv_model + self.engine_status = ie_status + self.door_status = id_status + self.petrol_in = i_petrol + self.people_count = i_people + } + +// convenience init(iv_model:String) +// { +// self.init(iv_model: iv_model) +// } + + func change_people(ip_count:Int) { + people_count += ip_count + } + + +}//class sportcar + +//цистерны +class Tunkcar : Car, consolePrintable{ + + var engine_status: Bool=true + var door_status:Bool=false + var petrol_in:Double=0 + + func switch_door(iflag: Bool) { + + door_status = (iflag == true ? false : true) + + } + + var description: String { + return String(describing: "Вид транспортного средства: \(v_type), Модель: \(v_model), статус двигателя: \(engine_status == true ? "запущен":"заглушен"), статус дверей: \(door_status == true ? "открыты": "закрыты"), залито бензина: \(petrol_in) литров, залито в цистерну: \(tunk_filled)") + } + + var tunk_filled:Int = 0 //литров вещества в цистерне + let v_type:String="цистерна" + var v_model:String + + init(iv_model:String, ie_status:Bool, id_status: Bool, i_petrol:Double, i_tunkfilled:Int){ + self.v_model = iv_model + self.engine_status = ie_status + self.door_status = id_status + self.petrol_in = i_petrol + self.tunk_filled = i_tunkfilled + } + + func fill_tunk(fill_volume:Int) { + tunk_filled += fill_volume + } + + func p_description() + { + print ("Вид транспортного средства: \(v_type), Модель: \(v_model), статус двигателя: \(engine_status), статус дверей: \(door_status), залито бензина: \(petrol_in) литров, залито в цистерну: \(tunk_filled)") + } +}//class Tunkcar + + + + + + +//выводим информацию о легковом автомобиле + +var honda = Sportcar(iv_model:"Honda",ie_status: false, id_status: false, i_petrol: 0, i_people: 0) +print("начальные параметры \(honda.v_model)") +honda.printDescription() +print("\nзаливаем бензин") +honda.fill_petrol(ipetrol:50) +//печатаем что получилось +honda.printDescription() + +var ferrari = Sportcar(iv_model:"Ferrari",ie_status: true, id_status: true, i_petrol: 0, i_people: 1) +print("\nначальные параметры \(ferrari.v_model)") +ferrari.printDescription() +print("\nвыключаем двигатель, глушим мотор, подсаживаем 3-х человек") +ferrari.switch_door(iflag:true) +ferrari.switch_engine(iflag:true) +ferrari.change_people(ip_count: 3) +ferrari.printDescription() + +var man = Tunkcar(iv_model: "Man", ie_status: false, id_status: false, i_petrol: 0, i_tunkfilled: 0) +print("\nначальные параметры \(man.v_model)") +man.printDescription() +print("\nоткрываем двери, включаем двигатель, заливаем бензин, наполняем цистерну") +man.fill_petrol(ipetrol:50) +man.switch_door(iflag:false) +man.switch_engine(iflag:false) +man.fill_tunk(fill_volume: 500) +//печатаем что получилось +man.printDescription()