2018年6月25日月曜日

開発環境

Head First C# ―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Greene (著)、佐藤 嘉一 (監修, 監修)、木下 哲也 (翻訳)、オライリージャパン)の3章(オブジェクト指向になる! - わかりやすいコードにする)、自分で考えてみよう(p. 95)を取り組んでみる。

コード

MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:App1"
             x:Class="App1.MainPage">
    <StackLayout>
        <!-- Place new controls here -->
        <!--
     <Label Text="Welcome to Xamarin.Forms!" 
           HorizontalOptions="Center"
           VerticalOptions="CenterAndExpand" />
        -->
        <Editor x:Name="editor1"
                Text="destination1" />
        <Editor x:Name="editor2"
                Text="route1" />
        <Editor x:Name="editor3"
                Text="route2" />
        <Button x:Name="button1"
                Text="button1"
                Clicked="button1_Clicked"/>
    </StackLayout>

</ContentPage>

MainPage.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;

namespace App1
{
 public partial class MainPage : ContentPage
 {
  public MainPage()
  {
   InitializeComponent();
  }

        private void button1_Clicked(object sender, EventArgs e)
        {
            string destination = editor1.Text;
            string route2StreetToAvoid = editor2.Text;
            string route3StreetToInclude = editor3.Text;

            Navigator navigator1 = new Navigator();
            navigator1.SetDestination(destination);
            int distance1 = navigator1.TotalDistance();

            Navigator navigator2 = new Navigator();
            navigator2.SetDestination(destination);
            navigator2.ModifyRouteToAvoid(route2StreetToAvoid);
            int distance2 = navigator2.TotalDistance();

            Navigator navigator3 = new Navigator();
            navigator3.SetDestination(destination);
            navigator3.ModifyRouteToAvoid(route3StreetToInclude);
            int distance3 = navigator3.TotalDistance();

            int shortestDistance = 
                Math.Min(distance1, Math.Min(distance2, distance3));

            DisplayAlert("", shortestDistance.ToString(), "cancel");
        }
    }

    public class Navigator
    {
        private string destination;

        public void SetDestination(string destination)
        {
            this.destination = destination;
        }
        public void ModifyRouteToAvoid(string route) { }
        public void ModifyRouteToInclude(string route) { }
        public void GetRoute() { }
        public void GetTimeToDestination() { }
        public int TotalDistance()
        {
            return 0;
        }
    }
}

0 コメント:

コメントを投稿